使用 jpg 图像从 ffmpeg 创建延时视频

Creating time lapse video from ffmpeg with jpg images

我正在尝试制作延时视频。 我有一个名为 IM_date_time.jpg 的图像文件,如 IMG_20210516_235523.jpg (2048 × 1536) 我有大约 3700 个文件。 我用过这个命令:

ffmpeg -y -i IMG*.jpg -r 5 -s hd1080 output.mp4

这不起作用,我不明白为什么它要写入我的图像。不需要 -y

我想要一个高清视频(全高清或只是高清)和一个图像来表示每秒 1 或 2 帧。

我正在使用 Linux Ubuntu 20.04.02 LTS 和 ffmpeg 4.2.4.

您可能已经覆盖了您的图片

glob 通配符 (*) 扩展并且您的命令被解释为:

ffmpeg -y -i IMG_20210516_235523.jpg IMG_20210516_235524.jpg IMG_20210516_235525.jpg ... -r 5 -s hd1080 output.mp4

结合-y(不询问就覆盖)这意味着除了第一张图像之外的所有图像都被认为是输出并已被覆盖。因此,以下所有图像现在都是第一张图像的重新编码副本。

使用-pattern_type glob

在 Linux 和 macOS 上,您可以使用 image muxer 输入选项 -pattern_type glob。这将允许您使用 IMG*.jpg 并按预期运行。

ffmpeg -framerate 5 -pattern_type glob -i 'IMG*.jpg' -vf "scale=-2:1080,format=yuv420p" -movflags +faststart output.mp4
  • 帧速率使用 -framerate 图像混合器输入选项设置。如果省略 -framerate,则应用默认的 -framerate 25

  • 有些玩家不喜欢低帧率。如果您发现问题,请添加输出选项 -r 10。它将复制帧从 5 到 10,但输出视频看起来是一样的。