首页 > 解决方案 > 使用 jpg 图像从 ffmpeg 创建延时视频

问题描述

我正在尝试创建延时视频。我的图像文件命名IM_date_time.jpgIMG_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。

标签: videoffmpegjpegmp4

解决方案


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

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

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

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

利用-pattern_type glob

在 Linux 和 macOS 上,您可以使用image muxer input option -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 25如果-framerate省略,则应用默认值 of 。

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


推荐阅读