如何使用 ffmpeg 在特定时间范围内显示覆盖图像

如何使用 ffmpeg 在特定时间范围内显示覆盖图像

我正在向视频添加覆盖图像,它可以起作用,但我想仅在特定时间范围内显示它:

ffmpeg -i video2.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out2.mp4

这显示错误

key 'enable' not found

答案1

语法对我来说是正确的。使用单引号,这样您就不必转义表达式:

ffmpeg -i input.mp4 -i watermark.png -filter_complex \
"[0:v][1:v] overlay=10:10:enable='between(t,1,2)'" output.mp4

如果你没有选择enable,请确保使用 ffmpeg 2.0 或更高版本。仅在那里支持时间线编辑(请参阅更新日志)。

如果您想要叠加多幅图像,请使用以下命令:

ffmpeg -i input.mp4 -i watermark.png -i watermark2.png -filter_complex \
"[0:v][1:v] overlay=10:10:enable='between(t,1,2)' [tmp]; [tmp][2:v] overlay=20:20:enable='between(t,2,3)'" output.mp4

要定义起点并将叠加层放置到视频结束,请inf使用无穷。此示例将从第 10 秒开始显示直到视频结束:

... enable='between(t,10,inf)'

相关内容