为什么 ffmpeg 会跳过一些图像?

Why ffmpeg is skipping some images?

我正在尝试使用 ffmpeg 创建具有交叉淡入淡出效果的幻灯片。

如前所述,另一个 SE question,我为此目的使用以下行。

ffmpeg -i SEQ_%03d.png -i $AUDIO -vf zoompan=d=$TOTAL_DURATION:fps=1/$FADE_DURATION,framerate=25:interp_start=0:interp_end=255:scene=100 -c:v mpeg4 -shortest -maxrate 5M -q:v 2 "temp_file.mp4"

完整脚本存储在 Github.

这很好用。但是,它正在跳过我的一些图像。它会跳过我使用 GIMP 创建的图像。这些图像正在出现,如果我将其保留在序列的开头。但是,不是最后。


我为此创建了一个 MVP

可以使用以下命令重现该问题。

ffmpeg -i %02d.png -vf zoompan=d=4:fps=1,framerate=25 out.mp4

输入图像可用 Github


请帮助我理解为什么这个脚本没有拍摄我的一些图像。

谢谢。

序列中的所有图像都应具有相同的分辨率和像素格式。在 MVP 中,03.png 与其他两个 (rgb24) 相比具有不同的像素格式 (rgba)。

将所有图像转换为相同格式,并防止 ffmpeg 重新初始化滤镜图。

ffmpeg -reinit_filter 0 -i SEQ_%03d.png -i $AUDIO -vf scale,format=rgb24,zoompan=d=$TOTAL_DURATION:fps=1/$FADE_DURATION,framerate=25:interp_start=0:interp_end=255:scene=100 -c:v mpeg4 -shortest -maxrate 5M -q:v 2 "temp_file.mp4"