added webm support
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / converters / AvconvVideo.java
index f0d80bf..ea08e5d 100644 (file)
@@ -18,10 +18,11 @@ import eu.svjatoslav.meviz.encoder.EncodingOptions;
 
 public class AvconvVideo extends AbstractConverter {
 
-       private void constructCodecParamsString(final EncodingOptions options,
+       private String constructCodecParamsString(final EncodingOptions options,
                        final int videoBitrate, final int audioBitrate,
-                       final StringBuffer codecParams, final String videoCodec,
-                       final String audioCodec) {
+                       final String videoCodec, final String audioCodec) {
+
+               StringBuffer codecParams = new StringBuffer();
 
                if (audioCodec == null)
                        codecParams.append("-an ");
@@ -38,6 +39,8 @@ public class AvconvVideo extends AbstractConverter {
 
                if (options.deinterlace)
                        codecParams.append("-filter:v yadif ");
+
+               return codecParams.toString();
        }
 
        private int getAudioBitrateValue(final BitrateParameter.bitrate bitRate) {
@@ -65,7 +68,7 @@ public class AvconvVideo extends AbstractConverter {
 
        @Override
        public String getCommand(final File inputFile, final File targetFile,
-                       final EncodingOptions options) {
+                       final EncodingOptions options, String targetFormat) {
 
                int videoBitrate = getVideoBitrateValue(options.getVideoBitrate());
                int audioBitrate = getAudioBitrateValue(options.getAudioBitrate());
@@ -76,6 +79,11 @@ public class AvconvVideo extends AbstractConverter {
                String videoCodec = "libx264";
                String audioCodec = "libmp3lame";
 
+               if (targetFormat.equals("webm")) {
+                       videoCodec = "vp9";
+                       audioCodec = "opus";
+               }
+
                if (options.getVideoBitrate() == bitrate.COPY)
                        videoCodec = "copy";
 
@@ -92,8 +100,8 @@ public class AvconvVideo extends AbstractConverter {
                        codecParams.append("-s 640x480 ");
                }
 
-               constructCodecParamsString(options, videoBitrate, audioBitrate,
-                               codecParams, videoCodec, audioCodec);
+               codecParams.append(constructCodecParamsString(options, videoBitrate,
+                               audioBitrate, videoCodec, audioCodec));
 
                return "avconv -i \"" + inputFile.getAbsolutePath() + "\" "
                                + codecParams.toString() + "\"" + targetFile.getAbsolutePath()
@@ -102,12 +110,14 @@ public class AvconvVideo extends AbstractConverter {
 
        @Override
        public List<String> getSourceFileExtensions() {
-               return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v");
+               return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v",
+                               "webm");
        }
 
        @Override
        public List<String> getTargetFileExtensions() {
-               return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v");
+               return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v",
+                               "webm");
        }
 
        private int getVideoBitrateValue(final BitrateParameter.bitrate bitRate) {