带有淡入淡出效果的 ffmpeg 幻灯片

带有淡入淡出效果的 ffmpeg 幻灯片

我刚刚弄清楚了如何制作带有淡入淡出效果的幻灯片。这是一个两步过程。第一步以帧速率 0.5(即每张图片 2 秒)读取图片,并以帧速率 2 生成中间视频。这意味着每张图片重复 4 次。第二步应用帧速率过滤器。结果是每张图片显示 1.5 秒,然后进行 0.5 秒的淡入淡出。

ffmpeg -framerate 0.5 -i IMG_%3d.jpg -r 2 -codec:v mpeg4 temp.mp4

ffmpeg -i temp.mp4 -vf "framerate=fps=25" -codec:v mpeg4 out.mp4

这两个步骤过程很好,但我有两个问题:

  1. 是否也可以仅通过一个步骤就获得相同的结果,而无需中间视频文件?
  2. 如果第一个问题的答案是否定的,有人可以向我展示如何修改上述命令以获得无损中间文件,例如 RAWVIDEO?

谢谢,迈克尔

答案1

您可以在应用滤镜之前重新定时帧:

ffmpeg -i IMG_%3d.jpg  -vf "setpts=N/0.5/TB,framerate=fps=25" -codec:v mpeg4 out.mp4

更新:帧速率过滤器似乎与摄取时的输入帧速率相关,因此使用管道的 alt 方法

ffmpeg -framerate 0.5 -i IMG_%3d.jpg -vf fps=2 -f nut - | ffmpeg -f nut -i - -vf framerate=25 -c:v mpeg4 out.mp4

单行解决方法:

ffmpeg -i IMG_%3d.jpg -vf zoompan=z=1:d=4:s=WxH:fps=2,framerate=25 -c:v mpeg4 out.mp4

其中 W 和 H 被输入尺寸替换。

答案2

我想总结一下解决方案:

ffmpeg -i IMG_%3d.jpg -vf zoompan=d=(A+B)/B:s=WxH:fps=1/B,framerate=25:interp_start=0:interp_end=255:scene=100 -c:v mpeg4 -maxrate 5M -q:v 2 out.mp4

其中 A 是每张图片显示的持续时间(以秒为单位)(不包括淡入淡出持续时间),B 是淡入淡出持续时间(以秒为单位),WxH 是输出视频的大小。

相关内容