use of org.fagu.fmv.ffmpeg.executor.FFMPEGExecutorBuilder in project fmv by f-agu.
the class ConcatFadeExecutable method execute.
/**
* @see org.fagu.fmv.core.exec.Executable#execute()
*/
@Override
public void execute(File toFile, Cache cache) throws IOException {
if (!hasChildren()) {
return;
}
FFMPEGExecutorBuilder builder = FFUtils.builder(getProject());
List<InputProcessor> inputProcessors = new ArrayList<>();
// executable
for (Executable executable : executables) {
File file = getProject().getFileCache().getFile(executable, cache);
InputProcessor inputProcessor = builder.addMediaInputFile(file);
// audioMix.addInput(inputProcessor);
inputProcessors.add(inputProcessor);
}
// source
for (Source source : sources) {
FilterInput filterInput = source.createAndAdd(builder);
if (filterInput instanceof InputProcessor) {
inputProcessors.add((InputProcessor) filterInput);
// MovieMetadatas movieMetadatas = ((InputProcessor)filterInput).getMovieMetadatas();
// if(movieMetadatas.contains(Type.AUDIO)) {
// audioMix.addInput(filterInput, audioStart);
// } else {
// throw new RuntimeException("Source is not an audio stream: " + source);
// }
} else {
throw new RuntimeException("Source is not a InputProcessor: " + source);
}
}
applyConcatFade(builder, inputProcessors, toFile, cache);
FFExecutor<Object> executor = builder.build();
executor.execute();
}
use of org.fagu.fmv.ffmpeg.executor.FFMPEGExecutorBuilder in project fmv by f-agu.
the class GenericExecutable method execute.
/**
* @see org.fagu.fmv.core.exec.Executable#execute()
*/
@Override
public void execute(File toFile, Cache cache) throws IOException {
if (!hasChildren()) {
return;
}
FFMPEGExecutorBuilder builder = FFUtils.builder(getProject());
populateWithIdentifiables(toFile, cache, builder);
OutputProcessor outputProcessor = outputProcessor(builder, toFile, cache);
ObjectInvoker.invoke(outputProcessor, attributeMap);
fixOutput(outputProcessor);
FFExecutor<Object> executor = builder.build();
executor.execute();
}
use of org.fagu.fmv.ffmpeg.executor.FFMPEGExecutorBuilder in project fmv by f-agu.
the class FFUtils method builder.
/**
* @param project
* @return
*/
public static FFMPEGExecutorBuilder builder(Project project) {
FFMPEGExecutorBuilder builder = FFMPEGExecutorBuilder.create();
builder.hideBanner();
if (project.getProperty(Properties.SHOW_COMMAND_LINE)) {
builder.addListener(new OperationListener() {
/**
* @see org.fagu.fmv.ffmpeg.operation.OperationListenerAdaptor#eventCreate(org.fagu.fmv.ffmpeg.executor.FFExecutor)
*/
@Override
public void eventCreate(FFExecutor<?> ffExecutor) {
try {
System.out.println(ffExecutor.getCommandLine());
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
return builder;
}
use of org.fagu.fmv.ffmpeg.executor.FFMPEGExecutorBuilder in project fmv by f-agu.
the class RipperTestCase method ffMPEGExecutorBuilder.
/**
* @return
* @throws IOException
*/
private FFMPEGExecutorBuilder ffMPEGExecutorBuilder() throws IOException {
FFMPEGExecutorBuilder builder = mock(FFMPEGExecutorBuilder.class);
doReturn(builder).when(builder).hideBanner();
doReturn(builder).when(builder).noStats();
InputProcessor inputProcessor = mock(InputProcessor.class);
doReturn(inputProcessor).when(builder).addMediaInputFile(any(File.class));
MovieMetadatas movieMetadatas = mock(MovieMetadatas.class);
doReturn(movieMetadatas).when(inputProcessor).getMovieMetadatas();
OutputProcessor outputProcessor = mock(OutputProcessor.class);
doReturn(outputProcessor).when(builder).addMediaOutputFile(any(File.class));
doReturn(outputProcessor).when(outputProcessor).codec(any(Coder.class));
return builder;
}
use of org.fagu.fmv.ffmpeg.executor.FFMPEGExecutorBuilder in project fmv by f-agu.
the class MockFFMPEGExecutorBuilder method mock.
/**
* @param movieMetadatasSupplier
* @param commandExecute
*/
public static void mock(Supplier<Function<String, MovieMetadatas>> movieMetadatasSupplier, final Consumer<String> commandExecute) {
FFMPEGExecutorBuilder.setFactory(() -> {
final FFExecutorFactory ffExecutorFactory = new FFExecutorFactory() {
@Override
public <R> FFExecutor<R> create(Operation<R, ?> operation, FFMPEGExecutorBuilder ffmpegExecutorBuilder) {
return new FFExecutor<R>(operation) {
/**
* @see org.fagu.fmv.ffmpeg.executor.FFExecutor#execute()
*/
@Override
public Executed<R> execute() throws IOException {
commandExecute.accept(getCommandLine());
return null;
}
};
}
};
Require require = new Require(false);
DefaultFFMPEGOperation<?> defaultFFMPEGOperation = new DefaultFFMPEGOperation<Object>(new FilterNaming(), require);
defaultFFMPEGOperation.getInputParameters().setInputProcessorFactory(new InputProcessorFactory() {
/**
* @see org.fagu.fmv.ffmpeg.operation.InputProcessorFactory#create(org.fagu.fmv.ffmpeg.operation.InputParameters,
* org.fagu.fmv.ffmpeg.operation.MediaInput, int, org.fagu.fmv.ffmpeg.require.Require)
*/
@Override
public InputProcessor create(InputParameters inputParameters, MediaInput input, int index, Require require) {
return new MyInputProcessor(movieMetadatasSupplier.get(), inputParameters, input, index, require);
}
});
return new MyFFMPEGExecutorBuilder(ffExecutorFactory, defaultFFMPEGOperation);
});
}
Aggregations