added mov support
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / converters / AvconvVideo.java
index beb634e..58cd215 100644 (file)
@@ -22,7 +22,7 @@ public class AvconvVideo extends AbstractConverter {
                        final int videoBitrate, final int audioBitrate,
                        final String videoCodec, final String audioCodec) {
 
-               StringBuffer codecParams = new StringBuffer();
+               final StringBuffer codecParams = new StringBuffer();
 
                if (audioCodec == null)
                        codecParams.append("-an ");
@@ -37,9 +37,12 @@ public class AvconvVideo extends AbstractConverter {
                if (audioBitrate != -1)
                        codecParams.append("-b:a " + audioBitrate + "k ");
 
-               if (options.deinterlace)
+               if (options.isDeinterlace())
                        codecParams.append("-filter:v yadif ");
 
+               if (options.getTargetFps() != null)
+                       codecParams.append("-r " + options.getTargetFps() + " ");
+
                return codecParams.toString();
        }
 
@@ -68,7 +71,7 @@ public class AvconvVideo extends AbstractConverter {
 
        @Override
        public String getCommand(final File inputFile, final File targetFile,
-                       final EncodingOptions options, String targetFormat) {
+                       final EncodingOptions options, final String targetFormat) {
 
                int videoBitrate = getVideoBitrateValue(options.getVideoBitrate());
                int audioBitrate = getAudioBitrateValue(options.getAudioBitrate());
@@ -80,7 +83,7 @@ public class AvconvVideo extends AbstractConverter {
                String audioCodec = "libmp3lame";
 
                if (targetFormat.equals("webm")) {
-                       videoCodec = "vp9";
+                       videoCodec = "vp8";
                        audioCodec = "opus";
                        codecParams.append("-s 800x600 ");
                }
@@ -94,11 +97,16 @@ public class AvconvVideo extends AbstractConverter {
                if (options.getAudioBitrate() == bitrate.NONE)
                        audioCodec = null;
 
-               if (options.forPortablePlayer) {
+               if (options.isForPortablePlayer()) {
                        videoBitrate = 1000;
                        audioBitrate = 128;
                        videoCodec = "libxvid";
+
+                       // reduce resolution
                        codecParams.append("-s 640x480 ");
+
+                       // enforce maximum keyframe interval
+                       codecParams.append("-g 150 ");
                }
 
                codecParams.append(constructCodecParamsString(options, videoBitrate,
@@ -112,13 +120,13 @@ public class AvconvVideo extends AbstractConverter {
        @Override
        public List<String> getSourceFileExtensions() {
                return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v",
-                               "webm");
+                               "webm", "mov");
        }
 
        @Override
        public List<String> getTargetFileExtensions() {
                return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v",
-                               "webm");
+                               "webm", "mov");
        }
 
        private int getVideoBitrateValue(final BitrateParameter.bitrate bitRate) {
@@ -130,7 +138,7 @@ public class AvconvVideo extends AbstractConverter {
                        return 4000;
 
                case HIGH:
-                       return 40000;
+                       return 16000;
 
                case COPY:
                        return -1;