Parameter terminalParameter = new Parameter("Enable popup terminal.",
"--terminal");
+ Parameter deinterlaceParameter = new Parameter("Deinterlace video.",
+ "--deinterlace", "-d");
+
Parameter testParameter = new Parameter("Simulate file encoding.", "-t",
"--test");
parser.addParameter(recursiveParameter);
+ parser.addParameter(deinterlaceParameter);
+
parser.addParameter(testParameter);
parser.addParameter(terminalParameter);
if (recursiveParameter.isParameterSpecified())
options.recursive = true;
+ if (deinterlaceParameter.isParameterSpecified())
+ options.deinterlace = true;
+
if (terminalParameter.isParameterSpecified())
options.terminal = true;
public class EncodingOptions {
- public Bitrate.bitrate videoBitrate = Bitrate.bitrate.MEDIUM;
+ public Bitrate.bitrate videoBitrate = Bitrate.bitrate.MEDIUM;
- public Bitrate audioBitrate;
+ // public Bitrate audioBitrate;
- public boolean recursive;
+ public boolean deinterlace = false;
- public boolean terminal;
+ public boolean recursive;
- public boolean testOnly;
+ public boolean terminal;
- public File workingDirectory = new File(System.getProperty("user.dir"));
+ public boolean testOnly;
- List<String> outputFormats = new ArrayList<String>();
+ public File workingDirectory = new File(System.getProperty("user.dir"));
- List<String> inputPatterns = new ArrayList<String>();
+ List<String> outputFormats = new ArrayList<String>();
+
+ List<String> inputPatterns = new ArrayList<String>();
}
@Override
public String getCommand(final File inputFile, final File targetFile,
final EncodingOptions options) {
- //
- // int videoBitrate;
- //
- // switch (options.videoBitrate) {
- // case LOW:
- // videoBitrate = 3000;
- // break;
- //
- // case MEDIUM:
- // videoBitrate = 7000;
- // break;
- //
- // case HIGH:
- // videoBitrate = 15000;
- // break;
- //
- // default:
- // throw new RuntimeException("Video bitrate: " + options.videoBitrate
- // + " is not supported.");
- // }
+
+ int videoBitrate;
+ int audioBitrate;
+
+ switch (options.videoBitrate) {
+ case LOW:
+ videoBitrate = 1000;
+ audioBitrate = 128;
+ break;
+
+ case MEDIUM:
+ videoBitrate = 3500;
+ audioBitrate = 128;
+ break;
+
+ case HIGH:
+ videoBitrate = 15000;
+ audioBitrate = 500;
+ break;
+
+ default:
+ throw new RuntimeException("Video bitrate: " + options.videoBitrate
+ + " is not supported.");
+ }
// convert
- // final String codecParams =
- // "-acodec libmp3lame -vcodec libx264 -b 10000k -b:a 500k -filter:v yadif";
+ final StringBuffer codecParams = new StringBuffer();
+
+ codecParams.append("-acodec libmp3lame -vcodec libx264");
+
+ codecParams.append(" -b " + videoBitrate + "k");
+ codecParams.append(" -b:a " + audioBitrate + "k");
- final String codecParams = "-acodec libmp3lame -vcodec libx264 -b 3500k -b:a 128k";
+ if (options.deinterlace)
+ codecParams.append(" -filter:v yadif");
// pass through
// final String codecParams = "-acodec copy -vcodec copy";
return "avconv -i \"" + inputFile.getAbsolutePath() + "\" "
- + codecParams + " \"" + targetFile.getAbsolutePath() + "\"";
+ + codecParams.toString() + " \"" + targetFile.getAbsolutePath()
+ + "\"";
}
@Override