如何使用 FFmpeg 叠加 PNG 图像序列但从特定帧开始?

如何使用 FFmpeg 叠加 PNG 图像序列但从特定帧开始?

我在这里尝试了无数种方法。这可以在正确的时间覆盖 PNG,但序列本身并没有开始,而是以完成状态出现。

ffmpeg -i C:\projects\src\assets\video\base.mp4 -r 25 
-itsoffset 24.24 -i C:\projects\temp\q\s\xyz%03d.png -y 
-filter_complex [0:v]overlay=x=0:y=0:enable='between(t,438/25,606/25)'[out] 
-map [out] -map 0:a C:\projects\temp\q\composit.mp4

我需要图像序列xyz000从第 438 帧(438/25 == 24.24)开始其序列,并在第 606 帧(序列的长度)再次禁用。

我在这里尝试了多种不同的方法,但似乎没有任何效果。

有任何想法吗?

答案1

不要设置 input -r。它会以该速率重新生成新的时间戳。而 itsoffset 所做的是将原始时间戳偏移一定量。请改用-framerate

ffmpeg -i C:\projects\src\assets\video\base.mp4 -framerate 25
-itsoffset 24.24 -i C:\projects\temp\q\s\xyz%03d.png -y
-filter_complex [0:v]overlay=x=0:y=0:enable='between(t,438/25,606/25)'[out]
-map [out] -map 0:a C:\projects\temp\q\composit.mp4

如果你使用类似 sh 的 shell,则需要转义逗号,即(t,438/25,606/25)应写为(t\,438/25\,606/25)

相关内容