X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fencoder%2FCommandlineHandler.java;h=675703128a77ea2bef221e87158e31b497270086;hb=6a04c6536782dc3fcb906e1e83b3f40ef8f2dc89;hp=9b32ebdba51ea4f8ec45167984e0e90f8d8c3688;hpb=c921086faa9d28c7e5c8d3d7a382a2c00901fb18;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/encoder/CommandlineHandler.java b/src/main/java/eu/svjatoslav/meviz/encoder/CommandlineHandler.java index 9b32ebd..6757031 100755 --- a/src/main/java/eu/svjatoslav/meviz/encoder/CommandlineHandler.java +++ b/src/main/java/eu/svjatoslav/meviz/encoder/CommandlineHandler.java @@ -1,121 +1,87 @@ /* - * Meviz - Various tools collection to work with multimedia. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. + * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.meviz.encoder; - -import eu.svjatoslav.commons.commandline.parameterparser.Parameter; -import eu.svjatoslav.commons.commandline.parameterparser.Parser; -import eu.svjatoslav.commons.commandline.parameterparser.parameter.DirectoryParameter; -import eu.svjatoslav.commons.commandline.parameterparser.parameter.NullParameter; -import eu.svjatoslav.commons.commandline.parameterparser.parameter.StringParameter; - -public class CommandlineHandler { - - Parser parser = new Parser(); - StringParameter outputFormatParameter = parser - .createStringParameter("Encoding output format.") - .addAliases("-o", "--output-format").setMandatory(); - - NullParameter terminalParameter = parser.createNullParameter( - "Enable popup terminal.").addAliases("--terminal"); - - NullParameter deinterlaceParameter = parser.createNullParameter( - "Deinterlace video.").addAliases("--deinterlace", "-d"); +package eu.svjatoslav.meviz.encoder; - NullParameter testParameter = parser.createNullParameter( - "Simulate file encoding.").addAliases("-t", "--test"); +import eu.svjatoslav.commons.cli_helper.parameter_parser.Parser; +import eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.DirectoryParameter; +import eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.IntegerParameter; +import eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.NullParameter; +import eu.svjatoslav.commons.cli_helper.parameter_parser.parameter.StringParameters; - NullParameter recursiveParameter = parser.createNullParameter( - "Enable recursive mode.").addAliases("-r", "--recursive"); +class CommandlineHandler { - StringParameter inputPatternParameter = parser - .createStringParameter("File input pattern.") - .addAliases("-i", "--input-pattern").setMandatory(); + final Parser parser = new Parser(); - DirectoryParameter workingDirectoryParameter = parser - .createDirectoryParameter("Working directory.") - .addAliases("-w", "--working-directory").mustExist(); + private final StringParameters outputFormatParameter = parser.add(new StringParameters("Encoding output format.")) + .addAliases("-o", "--output-format").setMandatory(); - Parameter videoBitrateParameter = parser.createCustomParameter( - new Bitrate(), "Video bitrate.") - .addAliases("-v", "--video-bitrate"); + private final IntegerParameter targetFramerate = parser + .add(new IntegerParameter("Target framerate.").addAliases("-f", "--target-framerate")); - public Parser initParser() { - final Parser parser = new Parser(); + private final NullParameter deinterlaceParameter = parser.add(new NullParameter("Deinterlace video.")).addAliases("-d", + "--deinterlace"); - parser.addParameter(recursiveParameter); + private final NullParameter testParameter = parser.add(new NullParameter("Simulate file encoding.")).addAliases("-t", "--test"); - parser.addParameter(deinterlaceParameter); + private final NullParameter recursiveParameter = parser.add(new NullParameter("Enable recursive mode.")).addAliases("-r", + "--recursive"); - parser.addParameter(testParameter); + private final NullParameter forPortableParameter = parser.add(new NullParameter("Encode for portable player.")).addAliases("-p", + "--portable"); - parser.addParameter(terminalParameter); + private final StringParameters inputPatternParameter = parser.add(new StringParameters("File input pattern.")) + .addAliases("-i", "--input-pattern").setMandatory(); - parser.addParameter(outputFormatParameter); + private final DirectoryParameter workingDirectoryParameter = parser.add(new DirectoryParameter("Working directory.")) + .addAliases("-w", "--working-directory").mustExist(); - parser.addParameter(inputPatternParameter); + private final BitrateParameter videoBitrateParameter = parser.add(new BitrateParameter("Video bitrate")).addAliases("-v", + "--video-bitrate"); - parser.addParameter(workingDirectoryParameter); + private final BitrateParameter audioBitrateParameter = parser.add(new BitrateParameter("Audio bitrate")).addAliases("-a", + "--audio-bitrate"); - parser.addParameter(videoBitrateParameter); + /** + * @return {@link EncodingOptions} if commandline arguments were + * successfully parsed, or null if parsing error + * occurred. + */ + public EncodingOptions parseCommandlineArguments(final String[] args) { - return parser; - } + final EncodingOptions options = new EncodingOptions(); - /** - * @return {@link EncodingOptions} if commandline arguments were - * successfully parsed, or null if parsing error - * occurred. - */ - public EncodingOptions parseCommandlineArguments(final String[] args) { + parser.parse(args); - final EncodingOptions options = new EncodingOptions(); + options.setRecursive(recursiveParameter.isSpecified()); - final Parser parser = initParser(); - parser.parse(args); + options.setDeinterlace(deinterlaceParameter.isSpecified()); - if (recursiveParameter.isParameterSpecified()) - options.recursive = true; + options.setTestOnly(testParameter.isSpecified()); - if (deinterlaceParameter.isParameterSpecified()) - options.deinterlace = true; + if (outputFormatParameter.isSpecified()) + options.getOutputFormats().addAll(outputFormatParameter.getValue()); - if (terminalParameter.isParameterSpecified()) - options.terminal = true; + if (targetFramerate.isSpecified()) + options.setTargetFps(targetFramerate.getValue()); - if (testParameter.isParameterSpecified()) - options.testOnly = true; + if (workingDirectoryParameter.isSpecified()) + options.setWorkingDirectory(workingDirectoryParameter.getValue()); - if (outputFormatParameter.isParameterSpecified()) - options.outputFormats.addAll(outputFormatParameter - .getArgumentsAsStrings()); + if (inputPatternParameter.isSpecified()) + options.getInputPatterns().addAll(inputPatternParameter.getValue()); - if (workingDirectoryParameter.isParameterSpecified()) - options.workingDirectory = workingDirectoryParameter - .getArgumentsAsFiles().get(0); + options.setForPortablePlayer(forPortableParameter.isSpecified()); - if (inputPatternParameter.isParameterSpecified()) - options.inputPatterns.addAll(inputPatternParameter - .getArgumentsAsStrings()); + if (videoBitrateParameter.isSpecified()) + options.setVideoBitrate(videoBitrateParameter.getValue()); - if (videoBitrateParameter.isParameterSpecified()) - try { - options.videoBitrate = Bitrate.bitrate - .valueOf(videoBitrateParameter.getArgumentsAsStrings() - .get(0).toUpperCase()); - } catch (final Exception e) { - System.out - .println("Invalid video bitrate. Valid values are: LOW, MEDIUM, HIGH."); - return null; - } + if (audioBitrateParameter.isSpecified()) + options.setAudioBitrate(audioBitrateParameter.getValue()); - return options; - } + return options; + } }