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 ");
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();
}
@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());
String audioCodec = "libmp3lame";
if (targetFormat.equals("webm")) {
- videoCodec = "vp9";
+ videoCodec = "vp8";
audioCodec = "opus";
codecParams.append("-s 800x600 ");
}
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,
@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) {
return 4000;
case HIGH:
- return 40000;
+ return 16000;
case COPY:
return -1;