如何使用Fluent FFMpeg修剪和合并?

时间:2016-07-29 01:38:48

标签: node.js video ffmpeg fluent-ffmpeg

这是我想用fluent-ffmpeg做的事情:

我有3个输入文件。一个介绍,主要和outro视频。我希望合并这三个,同时修剪主视频。这是我的代码:

var ffmpegCommand = ffmpeg();
ffmpegCommand.addInput(introVideo);
ffmpegCommand.addInput(mainVideo).seekInput(20).duration(3);
ffmpegCommand.addInput(outroVideo);
ffmpegCommand.on('error', function(err, stdout, stderr){
  console.log("FAILED!\n\t"+err+"\n\t"+stdout+"\n\t"+stderr);
});
ffmpegCommand.on('end', function(){
  console.log('COMPLETE!');
});
ffmpegCommand.on('start', function(commandLine) {
  console.log('Spawned Ffmpeg with command: ' + commandLine);
});
ffmpegCommand.mergeToFile('final.mp4', './vid_files/tmp');

该程序执行正常,但是当我ffplay final.mp4时,结果是introVideo播放然后视频似乎冻结。根据fluent-ffmpeg文档,它指出"这些[输入选项]方法中的每一个都适用于最后添加的输入"。所以我无法弄清楚为什么这种语法似乎不起作用......

如何修剪要发送到mergeToFile的主视频?

请注意,如果我在第二个addInput上没有.seekinput(20).duration(3),这样可以正常工作。

哦,这是输出的commandLine值:

ffmpeg -i ./vid_files/intro.mp4 -ss 20 -i ./vid_files/main.mp4 -i ./vid_files/outro.mp4 -y -filter_complex concat=n=3:v=1:a=1 -t 3 final.mp4

0 个答案:

没有答案