Search in sources :

Example 1 with BufferedReadLine

use of org.fagu.fmv.soft.exec.BufferedReadLine in project fmv by f-agu.

the class FFMPEGOperation method init.

// *********************************************
/**
 */
private void init() {
    outAndErr = new ArrayList<>(40);
    outAndErrReadLine = new BufferedReadLine(outAndErr);
}
Also used : BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine)

Example 2 with BufferedReadLine

use of org.fagu.fmv.soft.exec.BufferedReadLine in project fmv by f-agu.

the class ExecSoftFoundFactory method create.

/**
 * @see org.fagu.fmv.soft.find.SoftFoundFactory#create(java.io.File, Locator, SoftPolicy)
 */
@Override
public final SoftFound create(File file, Locator locator, SoftPolicy softPolicy) throws IOException {
    Parser parser = parserFactory.create(file, softPolicy);
    CommandLine commandLine = FMVCommandLine.create(file, parameters);
    String cmdLineStr = CommandLineUtils.toLine(commandLine);
    List<String> readLineList = new ArrayList<>();
    BufferedReadLine bufferedReadLine = new BufferedReadLine(readLineList);
    FMVExecutor executor = executorFactory.create(file, parser, bufferedReadLine);
    try {
        int exitValue = executor.execute(commandLine);
        SoftFound softFound = parser.closeAndParse(cmdLineStr, exitValue);
        if (locator != null && softFound != null) {
            softFound.setLocalizedBy(locator.toString());
        }
        return softFound;
    } catch (IOException e) {
        return parser.closeAndParse(e, cmdLineStr, readLineList);
    }
}
Also used : BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine) FMVCommandLine(org.fagu.fmv.soft.exec.FMVCommandLine) CommandLine(org.apache.commons.exec.CommandLine) ArrayList(java.util.ArrayList) IOException(java.io.IOException) FMVExecutor(org.fagu.fmv.soft.exec.FMVExecutor)

Example 3 with BufferedReadLine

use of org.fagu.fmv.soft.exec.BufferedReadLine in project fmv by f-agu.

the class SoftExecutor method execute.

// -------------------------------------------------------------
/**
 * @param executorService
 * @return
 * @throws IOException
 */
private <R> R execute(SoftExecutor.ForExec<R> forExec) throws IOException {
    ExecListener execListener = new Proxifier<>(ExecListener.class).addAll(execListeners).proxify();
    CommandLine commandLine = getCommandLine();
    String cmdLineStr = CommandLineUtils.toLine(commandLine);
    execListener.eventPrepare(cmdLineStr);
    List<String> readLineList = new ArrayList<>();
    ReadLine bufferedReadLine = new BufferedReadLine(readLineList);
    FMVExecutor fmvExecutor = createFMVExecutor(execFile.getParentFile(), bufferedReadLine);
    applyCustomizeExecutor(fmvExecutor);
    return forExec.exec(fmvExecutor, commandLine, execListener, readLineList);
}
Also used : BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine) FMVCommandLine(org.fagu.fmv.soft.exec.FMVCommandLine) CommandLine(org.apache.commons.exec.CommandLine) Proxifier(org.fagu.fmv.soft.utils.Proxifier) ArrayList(java.util.ArrayList) ReadLine(org.fagu.fmv.soft.exec.ReadLine) BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine) FMVExecutor(org.fagu.fmv.soft.exec.FMVExecutor)

Example 4 with BufferedReadLine

use of org.fagu.fmv.soft.exec.BufferedReadLine in project fmv by f-agu.

the class MP4TagCodecNotFoundFFExecFallbackTestCase method test1.

/**
 * @throws Exception
 */
@Test
@Ignore
public void test1() throws Exception {
    List<String> l = new ArrayList<>();
    l.add("[avi @ 0000000001c52cc0] scale/rate is 0/0 which is invalid. (This file has been generated by broken software.)");
    l.add("[avi @ 0000000001c52cc0] non-interleaved AVI");
    l.add("Input #0, avi, from 'D:\\Pe\\TO\\EN\\5\\La.avi':");
    l.add("  Duration: 01:54:32.96, start: 0.000000, bitrate: 855 kb/s");
    l.add("    Stream #0:0: Video: mpeg4 (DX50 / 0x30355844), yuv420p, 512x256 [SAR 1:1 DAR 2:1], 749 kb/s, 25 fps, 25 tbr, 25 tbn, 30k tbc");
    l.add("    Metadata:");
    l.add("      title           : Main");
    l.add("    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 96 kb/s");
    l.add("    Metadata:");
    l.add("      title           : Audio - fr;02");
    l.add("    Stream #0:2: Subtitle: xsub (DXSB / 0x42535844), 640x480, 867 kb/s");
    l.add("    Metadata:");
    l.add("      title           : Subtitle - fr");
    l.add("[libx264 @ 0000000001d652c0] using SAR=1/1");
    l.add("[libx264 @ 0000000001d652c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX");
    l.add("[libx264 @ 0000000001d652c0] profile High, level 2.1");
    l.add("[libx264 @ 0000000001d652c0] 264 - core 148 r2705 3f5ed56 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=8 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00");
    l.add("[mp4 @ 00000000023400a0] Could not find tag for codec xsub in stream #2, codec not currently supported in container");
    l.add("Output #0, mp4, to 'D:\\Pe\\TO\\EN\\5\\La.avi2725827522498285472.mp4':");
    l.add("  Metadata:");
    l.add("    encoder         : Lavf57.50.100");
    l.add("    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 512x256 [SAR 1:1 DAR 2:1], q=-1--1, 25 fps, 12800 tbn, 25 tbc");
    l.add("    Metadata:");
    l.add("      title           : Main");
    l.add("      comment         : fmvversion:0.5.3-SNAPSHOT");
    l.add("      rotate          : 0");
    l.add("      encoder         : Lavc57.58.100 libx264");
    l.add("    Side data:");
    l.add("      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1");
    l.add("    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s");
    l.add("    Metadata:");
    l.add("      title           : Audio - fr;02");
    l.add("      encoder         : Lavc57.58.100 aac");
    l.add("    Stream #0:2: Subtitle: xsub (DXSB / 0x42535844), 640x480, 867 kb/s");
    l.add("    Metadata:");
    l.add("      title           : Subtitle - fr");
    l.add("Stream mapping:");
    l.add("  Stream #0:0 -> #0:0 (mpeg4 (native) -> h264 (libx264))");
    l.add("  Stream #0:1 -> #0:1 (mp3 (native) -> aac (native))");
    l.add("  Stream #0:2 -> #0:2 (copy)");
    l.add("Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument");
    l.add("[Parsed_volumedetect_0 @ 0000000001d86420] n_samples: 0");
    l.add("[aac @ 0000000001d7f980] Qavg: nan");
    FFEnv ffEnv = mock(FFEnv.class);
    @SuppressWarnings("unchecked") FFExecutor<Object> executor = mock(FFExecutor.class);
    BufferedReadLine outputReadLine = new BufferedReadLine(l);
    @SuppressWarnings("unchecked") Operation<?, ?> operation = mock(Operation.class);
    OutputParameters outputParameters = mock(OutputParameters.class);
    doReturn(executor).when(ffEnv).getExecutor();
    doReturn(operation).when(executor).getOperation();
    doReturn(outputParameters).when(operation).getOutputParameters();
    MP4TagCodecNotFoundFFExecFallback fb = new MP4TagCodecNotFoundFFExecFallback();
    fb.prepare(ffEnv, null);
}
Also used : BufferedReadLine(org.fagu.fmv.soft.exec.BufferedReadLine) OutputParameters(org.fagu.fmv.ffmpeg.operation.OutputParameters) FFEnv(org.fagu.fmv.ffmpeg.executor.FFEnv) ArrayList(java.util.ArrayList) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

BufferedReadLine (org.fagu.fmv.soft.exec.BufferedReadLine)4 ArrayList (java.util.ArrayList)3 CommandLine (org.apache.commons.exec.CommandLine)2 FMVCommandLine (org.fagu.fmv.soft.exec.FMVCommandLine)2 FMVExecutor (org.fagu.fmv.soft.exec.FMVExecutor)2 IOException (java.io.IOException)1 FFEnv (org.fagu.fmv.ffmpeg.executor.FFEnv)1 OutputParameters (org.fagu.fmv.ffmpeg.operation.OutputParameters)1 ReadLine (org.fagu.fmv.soft.exec.ReadLine)1 Proxifier (org.fagu.fmv.soft.utils.Proxifier)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1