use terminal when copying memory card
[meviz.git] / src / main / java / eu / svjatoslav / meviz / grabmemcard / Main.java
index 99dfe0f..e538338 100755 (executable)
@@ -22,7 +22,7 @@ import eu.svjatoslav.meviz.encoder.EncodingOptions;
 import eu.svjatoslav.meviz.encoder.EncodingPlan;
 import eu.svjatoslav.meviz.encoder.EncodingTask;
 import eu.svjatoslav.meviz.encoder.converters.AbstractConverter;
-import eu.svjatoslav.meviz.encoder.converters.Ffmpeg;
+import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
 
 public class Main implements Module {
 
@@ -32,8 +32,7 @@ public class Main implements Module {
        }
 
        public File[] getDiskVideos(final File file) {
-               final String videosPath = file.getAbsolutePath()
-                               + "/AVCHD/BDMV/STREAM/";
+               final String videosPath = file.getAbsolutePath() + "/AVCHD/BDMV/STREAM/";
                final File videosDirectory = new File(videosPath);
 
                if (!videosDirectory.exists())
@@ -49,6 +48,13 @@ public class Main implements Module {
                return valueString;
        };
 
+       private EncodingOptions getEncodingOptions() {
+               final EncodingOptions options = new EncodingOptions();
+               options.setVideoBitrate(BitrateParameter.bitrate.COPY);
+               options.setAudioBitrate(BitrateParameter.bitrate.COPY);
+               return options;
+       }
+
        @Override
        public String getModuleCommand() {
                return "grabmemcard";
@@ -60,19 +66,14 @@ public class Main implements Module {
                final GregorianCalendar calendar = new GregorianCalendar();
 
                final StringBuffer directoryName = new StringBuffer();
-               directoryName.append(calendar.get(GregorianCalendar.YEAR) + "."
-                               + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
-                               + "."
-                               + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH))
-                               + " ");
-
-               directoryName.append(getDoubleDigit(now.getHours()) + ":"
-                               + getDoubleDigit(now.getMinutes()) + ":"
+               directoryName.append(
+                               calendar.get(GregorianCalendar.YEAR) + "." + getDoubleDigit(calendar.get(GregorianCalendar.MONTH) + 1)
+                                               + "." + getDoubleDigit(calendar.get(GregorianCalendar.DAY_OF_MONTH)) + " ");
+
+               directoryName.append(getDoubleDigit(now.getHours()) + ":" + getDoubleDigit(now.getMinutes()) + ":"
                                + getDoubleDigit(now.getSeconds()));
 
-               final String targetDirectoryPath = CommonPathResolver
-                               .getDesktopDirectory().getAbsolutePath()
-                               + "/"
+               final String targetDirectoryPath = CommonPathResolver.getDesktopDirectory().getAbsolutePath() + "/"
                                + directoryName.toString() + "/";
 
                System.out.println("Target directory path: " + targetDirectoryPath);
@@ -80,13 +81,24 @@ public class Main implements Module {
                return new File(targetDirectoryPath);
        }
 
+       private File getTargetFile(final File targetDirectory, final File sourceFile) {
+               // compute target file path
+               final StringBuffer targetFilePath = new StringBuffer();
+               targetFilePath.append(targetDirectory.getAbsolutePath());
+               targetFilePath.append("/");
+               targetFilePath.append(FilePathParser.getFileNameWithoutExtension(sourceFile));
+               targetFilePath.append(".mp4");
+               final File targetFile = new File(targetFilePath.toString());
+               return targetFile;
+       }
+
        @Override
        public void run(final String[] args) throws IOException {
 
                final File targetDirectory = getTargetDirectory();
                targetDirectory.mkdirs();
 
-               final AbstractConverter converter = new Ffmpeg();
+               final AbstractConverter converter = new AvconvVideo();
                final EncodingPlan encodingPlan = new EncodingPlan();
 
                final String userName = System.getProperty("user.name");
@@ -98,25 +110,15 @@ public class Main implements Module {
 
                        for (final File sourceFile : diskVideos) {
 
-                               // compute target file path
-                               final StringBuffer targetFilePath = new StringBuffer();
-                               targetFilePath.append(targetDirectory.getAbsolutePath());
-                               targetFilePath.append("/");
-                               targetFilePath.append(FilePathParser
-                                               .getFileNameWithoutExtension(sourceFile));
-                               targetFilePath.append(".mp4");
-                               final File targetFile = new File(targetFilePath.toString());
-
-                               final EncodingTask encodingTask = new EncodingTask(sourceFile,
-                                               targetFile, converter);
+                               final File targetFile = getTargetFile(targetDirectory, sourceFile);
+
+                               final EncodingTask encodingTask = new EncodingTask(sourceFile, targetFile, converter, "mp4");
+                               encodingTask.setUseTerminal(true);
                                encodingPlan.scheduleTask(encodingTask);
                        }
                }
 
-               final EncodingOptions options = new EncodingOptions();
-               options.setVideoBitrate(BitrateParameter.bitrate.COPY);
-
-               encodingPlan.execute(options);
+               encodingPlan.execute(getEncodingOptions());
        }
 
        @Override