X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fencoder%2Fconverters%2FAvconvVideo.java;h=58cd2153b2733f2df888fa7a2333f5d3f42f449f;hb=a34d0037dcd7f3d830d9edf0baa3438eee95643e;hp=ea08e5d903528e50520cc20b58499b818a1e3a29;hpb=0679806fed21137dc0d10f1ef99dc1bba73ddb95;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/converters/AvconvVideo.java b/src/main/java/eu/svjatoslav/meviz/encoder/converters/AvconvVideo.java index ea08e5d..58cd215 100644 --- a/src/main/java/eu/svjatoslav/meviz/encoder/converters/AvconvVideo.java +++ b/src/main/java/eu/svjatoslav/meviz/encoder/converters/AvconvVideo.java @@ -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,8 +83,9 @@ public class AvconvVideo extends AbstractConverter { String audioCodec = "libmp3lame"; if (targetFormat.equals("webm")) { - videoCodec = "vp9"; + videoCodec = "vp8"; audioCodec = "opus"; + codecParams.append("-s 800x600 "); } if (options.getVideoBitrate() == bitrate.COPY) @@ -93,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, @@ -111,13 +120,13 @@ public class AvconvVideo extends AbstractConverter { @Override public List getSourceFileExtensions() { return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v", - "webm"); + "webm", "mov"); } @Override public List getTargetFileExtensions() { return toList("mkv", "mts", "mp4", "avi", "mpg", "mpeg", "vob", "m4v", - "webm"); + "webm", "mov"); } private int getVideoBitrateValue(final BitrateParameter.bitrate bitRate) { @@ -129,7 +138,7 @@ public class AvconvVideo extends AbstractConverter { return 4000; case HIGH: - return 40000; + return 16000; case COPY: return -1;