2 * Meviz - Various tools collection to work with multimedia.
3 * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 2 of the GNU General Public License
7 * as published by the Free Software Foundation.
10 package eu.svjatoslav.meviz.grabmemcard;
13 import java.io.IOException;
14 import java.util.Date;
15 import java.util.GregorianCalendar;
17 import eu.svjatoslav.commons.file.CommonPathResolver;
18 import eu.svjatoslav.commons.file.FilePathParser;
19 import eu.svjatoslav.meviz.Module;
20 import eu.svjatoslav.meviz.encoder.BitrateParameter;
21 import eu.svjatoslav.meviz.encoder.EncodingOptions;
22 import eu.svjatoslav.meviz.encoder.EncodingPlan;
23 import eu.svjatoslav.meviz.encoder.EncodingTask;
24 import eu.svjatoslav.meviz.encoder.converters.Converter;
25 import eu.svjatoslav.meviz.encoder.converters.Mts2Mp4;
27 public class Main implements Module {
30 public String getDescription() {
31 return "Convenience helper to retrieve contents of inserted memory card.";
34 public File[] getDiskVideos(final File file) {
35 final String videosPath = file.getAbsolutePath()
36 + "/AVCHD/BDMV/STREAM/";
37 final File videosDirectory = new File(videosPath);
39 if (!videosDirectory.exists()) {
43 return videosDirectory.listFiles();
46 public String getDoubleDigit(final int value) {
47 String valueString = Integer.toString(value);
48 if (valueString.length() == 1) {
49 valueString = "0" + valueString;
55 public String getModuleCommand() {
59 @SuppressWarnings("deprecation")
60 public File getTargetDirectory() {
61 final Date now = new Date();
62 final GregorianCalendar calendar = new GregorianCalendar();
64 final StringBuffer directoryName = new StringBuffer();
65 directoryName.append(calendar.get(GregorianCalendar.YEAR) + "."
66 + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
68 + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH))
71 directoryName.append(getDoubleDigit(now.getHours()) + ":"
72 + getDoubleDigit(now.getMinutes()) + ":"
73 + getDoubleDigit(now.getSeconds()));
75 final String targetDirectoryPath = CommonPathResolver
76 .getDesktopDirectory().getAbsolutePath()
78 + directoryName.toString() + "/";
80 System.out.println("Target directory path: " + targetDirectoryPath);
82 return new File(targetDirectoryPath);
86 public void run(final String[] args) throws IOException {
88 final File targetDirectory = getTargetDirectory();
89 targetDirectory.mkdirs();
91 final Converter converter = new Mts2Mp4();
92 final EncodingPlan encodingPlan = new EncodingPlan();
94 final String userName = System.getProperty("user.name");
96 // final File file = new File("/media/" + userName + "/");
98 final File file = new File("/media/");
100 for (final File insertedDisk : file.listFiles()) {
101 final File[] diskVideos = getDiskVideos(insertedDisk);
103 for (final File sourceFile : diskVideos) {
105 // compute target file path
106 final StringBuffer targetFilePath = new StringBuffer();
107 targetFilePath.append(targetDirectory.getAbsolutePath());
108 targetFilePath.append("/");
109 targetFilePath.append(FilePathParser
110 .getFileNameWithoutExtension(sourceFile));
111 targetFilePath.append(".mp4");
112 final File targetFile = new File(targetFilePath.toString());
114 final EncodingTask encodingTask = new EncodingTask(sourceFile,
115 targetFile, converter);
116 encodingPlan.scheduleTask(encodingTask);
120 final EncodingOptions options = new EncodingOptions();
121 options.videoBitrate = BitrateParameter.bitrate.COPY;
123 encodingPlan.execute(options);
127 public void showCommandlineHelp() {
128 System.out.println("memory card grabber has no commandline options");