📜  ffmpeg 每秒只有一帧 (1)

📅  最后修改于: 2023-12-03 14:41:10.897000             🧑  作者: Mango

使用 ffmpeg 实现每秒只有一帧视频

在某些情况下,我们需要将视频帧率降低到每秒只有一帧。例如,当我们需要将视频转换为时间轮(time-lapse)视频时,这是非常有用的。ffmpeg是一个流行的工具,我们可以使用它来实现这个效果。

步骤

以下是将视频降低到每秒只有一帧的步骤:

  1. 打开终端并启动ffmpeg
ffmpeg -i input.mp4
  1. 检查视频信息并找到帧率信息。您会看到类似以下内容的输出:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.20.100
  Duration: 00:00:30.00, start: 0.000000, bitrate: 1684 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 1543 kb/s, 23.98 fps, 23.98 tbr, 11988 tbn, 47.95 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 131 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

从上面的输出中,我们可以看到帧率是 23.98 fps。这是我们需要降低的帧率。记下这个帧率。(在这个例子中是 23.98

  1. 执行以下命令,使用 -r 选项来设置每秒的帧数。
ffmpeg -i input.mp4 -r 1 output.mp4

注意,1 是我们希望的每秒帧数。

  1. 检查 output.mp4 视频的帧率
ffmpeg -i output.mp4

您应该会看到类似以下内容的输出:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.20.100
  Duration: 00:00:30.02, start: 0.000000, bitrate: 573 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 556 kb/s, 1 fps, 1 tbr, 11988 tbn, 2 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 131 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

注意输出中的 1 fps。这意味着我们的视频帧率已经成功地被降低到每秒只有一帧。

结论

我们已经演示了如何使用ffmpeg将视频降到每秒只有一帧。这是制作时间轮视频等其他视觉效果的基础。ffmpeg为此提供了很多选项,您可以通过查看官方文档来了解更多细节。