TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParams(); params.setOutputFile(line.getOptionValue(out.getOpt())); } else { throw new ParseException("Output file option must be provided."); params.setFrameRate(parseFrameRate(line.getOptionValue(frameRate.getOpt()))); params.getTtmlOptions().addAll(Stream.of(line.getOptions()).filter((o) -> o.equals(ttml)).map((o) -> { TtmlOption ttmlOption = new TtmlOption(); if (params.getTtmlOptions().isEmpty()) { throw new ParseException("At least one input TTML file must be provided.");
/** * Constructor. * * @param params parsed command line parameters * @throws ParseException */ public TtmlConverter(TtmlConverterCmdLineParams params) throws ParseException { outputFile = new File(params.getOutputFile()); if (!Files.isWritable(Paths.get((outputFile.getParent() == null) ? "." : outputFile.getParent()))) { throw new ParseException(String.format( "Output file %s cannot be written. Please check access rights.", params.getOutputFile())); } ttmlTts = params.getTtmlOptions().stream().map((o) -> { TtEltype tt; try { tt = XmlParser.parse(new File(o.getFileName()), new String[]{TTML_SCHEMA}, TTML_PACKAGES, TtEltype.class); } catch (XmlParsingException | FileNotFoundException e) { throw new ParseException(e); } TtmlUtils.reduceAccordingSegment(tt, o.getOffsetMS(), o.getStartMS(), o.getEndMS(), params.getFrameRate()); TtmlUtils.moveStyleRefToP(tt); return tt; }).collect(Collectors.toList()); }
tmpOut.deleteOnExit(); TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParams(); params.setOutputFile(tmpOut.getAbsolutePath()); params.getTtmlOptions() .add(new TtmlOptionBuilder().withFileName(getTtmlFile("xml/valid-ttml-2997-ndf.xml")) .withStartMS(15000) .withEndMS(19000) .build()); params.getTtmlOptions() .add(new TtmlOptionBuilder().withFileName(getTtmlFile("xml/valid-itt-2397-ndf.itt")) .withOffsetMS(5000)
private static void printStartMessage(TtmlConverterCmdLineParams parsedParams) { String mergeMsg = ""; String fileMsg = " file."; String startMsg; if (parsedParams.getTtmlOptions().size() > 1) { mergeMsg = "and merging"; fileMsg = " files."; } startMsg = "Start converting " + mergeMsg + " of " + parsedParams.getTtmlOptions().stream() .map(TtmlOption::getFileName).collect(Collectors.joining(", ", "[", "]")) + fileMsg; System.out.println(startMsg); }
@Test public void outputFileOptionParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test", "-o", "testFile"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals("Output file option", args[3], params.getOutputFile()); }
@Test public void frameRateOptionParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test", "-o", "testFile", "-f", "24000/1001"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals("Frame rate option", new BigFraction(24000).divide(1001), params.getFrameRate()); }
tmpOut.deleteOnExit(); TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParams(); params.setOutputFile(tmpOut.getAbsolutePath()); params.getTtmlOptions() .add(new TtmlOptionBuilder().withFileName(getTtmlFile("xml/valid-ttml-2997-ndf.xml")) .withStartMS(15000) .withEndMS(19000) .build()); params.getTtmlOptions() .add(new TtmlOptionBuilder().withFileName(getTtmlFile("xml/valid-itt-2397-ndf.itt")) .withOffsetMS(5000)
@Test public void ttmlOptionParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test", "0", "200", "45", "-o", "testFile", "-f", "24000/1001"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(1, params.getTtmlOptions().size()); TtmlOption option = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[2]), option.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[3]), option.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[4]), option.getEndMS()); }
@Test public void manyTtmlOptionsParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test1", "0", "200", "45", "-t", "test2", "10", "40", "67", "-o", "test"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(2, params.getTtmlOptions().size()); TtmlOption option1 = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option1.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[2]), option1.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[3]), option1.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[4]), option1.getEndMS()); TtmlOption option2 = params.getTtmlOptions().get(1); assertEquals("ttml option file part", args[6], option2.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[7]), option2.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[8]), option2.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[9]), option2.getEndMS()); }
@Test public void ttmlOptionWithoutOffsetArgsPrasedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "file", "-o", "test"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(1, params.getTtmlOptions().size()); TtmlOption option = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option.getFileName()); assertEquals("ttml option offset part", 0, option.getOffsetMS()); assertEquals("ttml option start part", 0, option.getStartMS()); assertEquals("ttml option end part", Long.MAX_VALUE, option.getEndMS()); }