![FFmpeg 在视频上叠加图像并带有淡入淡出效果](https://linux22.com/image/1528043/FFmpeg%20%E5%9C%A8%E8%A7%86%E9%A2%91%E4%B8%8A%E5%8F%A0%E5%8A%A0%E5%9B%BE%E5%83%8F%E5%B9%B6%E5%B8%A6%E6%9C%89%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BA%E6%95%88%E6%9E%9C.png)
对以下 ffmpeg 命令有几点疑问 -
ffmpeg -f concat -i input.txt -loop 1 -t 8 -i inputImg.jpg -filter_complex "[1]format=rgba,fade=alpha=1:st=0:d=8,setpts=PTS+10/TB[v1];[0][v1]overlay=x=70:y=100:enable='between(t,2,10)'" -crf 22 -threads 2 -preset ultrafast output.mp4
1- 如果我不提供-t 8
而只是shortest=1
在叠加过滤器中使用,循环对性能的影响 - 是否会创建无限时长的视频,并且只在叠加时选择最短的视频?
2- 做什么setpts
? - 我提到-t 8
- 所以它循环了 8 秒。如果我执行“setpts=PTS+10/TB”,它是否会将循环视频的持续时间增加到 18 秒,其中淡入效果从 10 秒到 18 秒?循环视频中从 0 到 10 秒有什么?
3- 2 个视频如何叠加 - 两个视频都是从第 0 秒开始合并的吗?
4- 如果我想在将在第 100 秒叠加在我的视频上的图像上应用淡入淡出效果,那么我必须创建一个 100 秒的循环视频? - 这将如何影响性能?
5- main_video[0] 的 frame_no 可以在 looped_video[1] 中使用吗?
6- 是否有任何性能高效的方法/替代方法可以在图像上应用淡入淡出效果,基于 frame_sequence 比如从第 30 到第 35 帧的 fade_in?
答案1
为了,
1- 如果我不提供 -t 8 而只是在覆盖过滤器中使用 shortest=1,循环对性能的影响 - 是否会创建无限持续时间的视频,并且仅在覆盖时才会选择最短的视频?
理论上是的。但是目前 有一个错误shortest=1
,所以不要使用它。
2-setpts 起什么作用?
它会改变时间戳。在您的命令中,它会将 10 秒添加到时间戳,以便图像的生成流的第一个时间戳为 10 秒。
3- 两个视频如何叠加 - 两个视频是否从第 0 秒开始合并?
具有相应时间戳的帧被叠加,即,具有 PTS 10 秒图像的帧叠加在具有 PTS 10 秒的基本视频帧上。
4- 如果我想在图像上应用淡入淡出效果,并在第 100 秒时将其叠加在视频上,那么我必须创建一个 100 秒的循环视频?- 这将如何影响性能?
不。持续时间应该是您希望视频显示的时间。使用 setpts 来移动开始时间。
5- main_video[0] 的 frame_no 可以在 looped_video[1] 中使用吗?
该enable
开关使用来自主视频的帧/时间戳。
6- 是否有任何性能高效的方法/替代方法可以在图像上应用淡入淡出效果,基于 frame_sequence 比如从第 30 到第 35 帧的 fade_in?
不,和你使用的一样。你可以使用引用帧数的变量来设置开始s
和持续时间n