use terminal when copying memory card
[meviz.git] / src / main / java / eu / svjatoslav / meviz / grabmemcard / Main.java
index 9e779c8..e538338 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * Meviz - Various tools collection to work with multimedia.
  * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 2 of the GNU General Public License
  * as published by the Free Software Foundation.
@@ -21,8 +21,8 @@ import eu.svjatoslav.meviz.encoder.BitrateParameter;
 import eu.svjatoslav.meviz.encoder.EncodingOptions;
 import eu.svjatoslav.meviz.encoder.EncodingPlan;
 import eu.svjatoslav.meviz.encoder.EncodingTask;
-import eu.svjatoslav.meviz.encoder.converters.Converter;
-import eu.svjatoslav.meviz.encoder.converters.Mts2Mp4;
+import eu.svjatoslav.meviz.encoder.converters.AbstractConverter;
+import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
 
 public class Main implements Module {
 
@@ -32,25 +32,29 @@ 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()) {
+               if (!videosDirectory.exists())
                        return new File[0];
-               }
 
                return videosDirectory.listFiles();
        }
 
        public String getDoubleDigit(final int value) {
                String valueString = Integer.toString(value);
-               if (valueString.length() == 1) {
+               if (valueString.length() == 1)
                        valueString = "0" + valueString;
-               }
                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";
@@ -62,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);
@@ -82,45 +81,44 @@ 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 Converter converter = new Mts2Mp4();
+               final AbstractConverter converter = new AvconvVideo();
                final EncodingPlan encodingPlan = new EncodingPlan();
 
                final String userName = System.getProperty("user.name");
 
-               // final File file = new File("/media/" + userName + "/");
-
-               final File file = new File("/media/");
+               final File file = new File("/media/" + userName + "/");
 
                for (final File insertedDisk : file.listFiles()) {
                        final File[] diskVideos = getDiskVideos(insertedDisk);
 
                        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.videoBitrate = BitrateParameter.bitrate.COPY;
-
-               encodingPlan.execute(options);
+               encodingPlan.execute(getEncodingOptions());
        }
 
        @Override