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

Posted

技术标签:

【中文标题】Fluent-ffmpeg:在 x 时间到 y 时间之间添加 gif 动画作为叠加【英文标题】:Fluent-ffmpeg : Adding gif animation as overlay between x time to y time 【发布时间】:2018-04-22 01:51:47 【问题描述】:

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

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 之前尝试了启用选项。但给出了同样的错误。

任何帮助将不胜感激。

【问题讨论】:

尝试转义时间范围内的逗号。 感谢@Mulvya 的回复。我得到了解决方案.. 【参考方案1】:

我终于找到了解决方案。这很简单。我之前的代码是

.addOption(['-ignore_loop 0', '-i '+wmimage+ '','-filter_complex [0:v][1:v]overlay=10:10:shortest=1: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)'"])

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

【讨论】:

【参考方案2】:
 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**

【讨论】:

嗨 Suraj,您能否为您的回答提供更多解释。仅代码答案对任何人的理解都没有好处

以上是关于Fluent-ffmpeg:在 x 时间到 y 时间之间添加 gif 动画作为叠加的主要内容,如果未能解决你的问题,请参考以下文章

使用节点 fluent-ffmpeg 流式传输 mp4 视频

fluent-ffmpeg 缩略图创建错误

fluent-ffmpeg 使用流式提取音频

使用 fluent-ffmpeg 与之前录制的音频重叠

wavesurfer fluent-ffmpeg提取音频

基于旋转更新约束(X,Y,W,H)时出错?