Fluent-ffmpeg:将gif动画添加为x时间到y时间之间的叠加

时间:2017-11-09 06:48:32

标签: node.js video ffmpeg gif fluent-ffmpeg

我是ffmpeg的初学者。我想将gif动画设置为从x秒到y秒的输入视频的叠加。我尝试了以下代码

var wmimage= 'public/source/watermark_file.gif';

ffmpeg('public/source/small.mp4')
.addOption(['-ignore_loop 0', '-i '+wmimage+ '','-filter_complex [0:v][1:v]overlay=10:10:shortest=1:'])
.save('public/video/output-video2.mp4');

这为我提供了从输入视频长度开始到结束的gif动画叠加。但我需要显示持续时间的gif(例如:从:2秒到:5秒)。所以我试着添加

enable="between(t,2,5)"

.addOption(['-ignore_loop 0', '-i '+wmimage+ '','-filter_complex [0:v][1:v]overlay=10:10:shortest=1:enable="between(t,2,5)"'])

但它会抛出

Error: ffmpeg exited with code 1: Error initializing complex filters.
Invalid argument

我在overlayshortest之前尝试了启用选项。但是给出了同样的错误。

任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

最后我得到了解决方案。这很简单。我之前的代码是

.addOption(['-ignore_loop 0', '-i '+wmimage+ '','-filter_complex [0:v][1:v]overlay=10:10:shortest=1:enable="between(t,2,5)"'])

并用double替换单引号,反之亦然。

.addOption(["-ignore_loop 0", "-i "+wmimage+ "","-filter_complex [0:v][1:v]overlay=10:10:shortest=1:enable='between(t,2,5)'"])

所以每个引号在ffmpeg中都很重要。

答案 1 :(得分:0)

 ffmpeg().input(`uploads/4444.mp4`).input('music/Bekind.mp3').input(`https://media.giphy.com/media/dS1rQkeAlZbmo/giphy.gif`).complexFilter('[2:v]scale=100:100[wat],[0:v][wat]overlay=10:10').addOption('-map 0:v').addOption('-map 1:a').videoCodec('libx264').output(`./downloads/444.mp4`).on('error', function(err, stdout, stderr) {
    console.log('Cannot process video: ' + err.message);
  }).on('end', function() {
    console.log('Finished processing');**my gif is not looping only please help**