copy audio (do not encode) when copying from memory card
[meviz.git] / src / main / java / eu / svjatoslav / meviz / grabmemcard / Main.java
index f078634..920a95c 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.
@@ -17,11 +17,12 @@ import java.util.GregorianCalendar;
 import eu.svjatoslav.commons.file.CommonPathResolver;
 import eu.svjatoslav.commons.file.FilePathParser;
 import eu.svjatoslav.meviz.Module;
+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 {
 
@@ -35,18 +36,16 @@ public class Main implements Module {
                                + "/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;
        };
 
@@ -87,38 +86,46 @@ public class Main implements Module {
                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 File targetFile = getTargetFile(targetDirectory, sourceFile);
 
                                final EncodingTask encodingTask = new EncodingTask(sourceFile,
-                                               targetFile, converter);
+                                               targetFile, converter, "mp4");
                                encodingPlan.scheduleTask(encodingTask);
                        }
                }
 
+               encodingPlan.execute(getEncodingOptions());
+       }
+
+       private EncodingOptions getEncodingOptions() {
                final EncodingOptions options = new EncodingOptions();
+               options.setVideoBitrate(BitrateParameter.bitrate.COPY);
+               options.setAudioBitrate(BitrateParameter.bitrate.COPY);
+               return options;
+       }
 
-               encodingPlan.execute(options);
+       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