FFMPEG-有没有可能在指定时间间隔内叠加多张图片到视频上?

15

我希望在一个120秒的视频中,以指定的间隔叠加多个图像(比如5个),例如在3-7秒之间叠加图像1。是否可以在不将视频分成多个部分的情况下实现?

2个回答

27
基本方法是:
ffmpeg -i video -i image1 -i image2 -i image3
 -filter_complex
    "[0][1]overlay=x=X:y=Y:enable='between(t,23,27)'[v1];
     [v1][2]overlay=x=X:y=Y:enable='between(t,44,61)'[v2];
     [v2][3]overlay=x=X:y=Y:enable='gt(t,112)'[v3]"
-map "[v3]" -map 0:a  out.mp4

最后一张图像将从t=112秒开始覆盖到视频结束。

1
在过滤复杂部分后插入“-crf 18”。我假设你的ffmpeg构建中有libx264。 - Gyan
如果我有一张单独的图片需要在多个时间间隔内重叠,我是否需要多次指定输入? - hack
我也在做同样的事情,但我的需求是毫秒级别的精度。因此,我发现在图像叠加中很难看到精确的时间。你有什么建议吗?请查看我的帖子https://stackoverflow.com/questions/45818266/precise-image-overlay-over-video-using-ffmpeg - Sunny Tambi
在SuperUser上发布一个新的问题,包括您的完整命令和控制台输出。 - Gyan
嘿@Mulvya,我已经提出了问题Link[https://dev59.com/sKnka4cB1Zd3GeqPVuv8]。 - ND1010_
显示剩余6条评论

2
以下代码可以创建一个视频,并在指定的时间段内添加多个叠加图像。
ffmpeg -i video -i image1 -i image2 -i image3 
-filter_complex
"[0][1]overlay=y=H-h:enable='between(t,2,4)'[v1];
 [v1][2]overlay=y=H-h:enable='between(t,6,8)'[v2];
 [v2][3]overlay=y=H-h:enable='between(t,8,10)'[v3]"
-map "[v3]" outputVideo.mp4

1
与Gyan的答案没有太大区别。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接