如何以7帧/秒的速度拍摄30帧/秒的视频编码


21

我对视频编码一无所知,我有一个用OpenGL编写的应用程序,正在将它生成的帧保存到png图像中。我的应用中的帧速度为7 FPS,我正在尝试从中创建视频。

为此,我使用ffmpeg这样

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

这是从该网站上获取的,但是我想知道是否有可能以30 FPS的速度显示动画的视频?



只需调整-framerate参数即可获得所需的结果。
nullptr

Answers:


21

我正在使用下面的代码来做同样的事情。

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4

分解命令:

ffmpeg             <- call ffmpeg
  -framerate 30    <- set the input framerate to 30
  -i img%03d.png   <- read PNG images with filename img001, img002, img003, etc..
                     img can be changed to another prefix
                     %03d can be changed to %04d for 0001, %05d for 00001 formats, etc...
  -c:v libx264     <- Set the codec to libx264
  -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp
  -crf 23          <- set the Constant Rate Factor to 23 (default value)
  -output.mp4      <- the output filename

这将以30 fps的速度读取输入(该-framerate 30选项),并使用libx264编解码器以恒定速率因子 23 对其进行编码(该-crf 23选项)。


26

有两个帧速率要考虑:输入和输出。

默认情况下,输入帧速率为25,除非另行说明,否则输出将使用与输入相同的帧速率。

输入和输出的帧速率相同

如果要输入输出具有相同的帧速率,则只需提供输入帧速率。本示例将帧速率设置为30000/1001(NTSC视频):

ffmpeg -framerate 30000/1001 -i input output.mp4
  • 另外,在此示例中,您可以使用ntsc代替30000/1001,但不要使用,29.97因为那是不正确或不正确的。请参阅其他帧速率别名

  • 由于默认的输入帧速率是25,并且如果仅设置输出帧速率,则将丢弃或复制帧以进行补偿。这就是在这种情况下设置输入帧频的原因。

输入和输出的不同帧率

有时您可能希望输入帧速率和输出帧速率不同。例如,您可能想以一定的速率输入帧,然后复制或删除帧,以便输出具有不同的帧速率。由于输出格式容器,播放器和/或设备的兼容性问题,您可能需要这样做:

ffmpeg -framerate 10 -i input -r 25 output.mp4
  • 在此示例中,帧将被复制为10到25。控制台输出将告诉您帧是被丢弃还是被复制。

  • 使用图像文件多路分配器-framerate,而使用设置输出帧速率-r

  • -pix_fmt yuv420p如果要输出H.264视频,则在某些情况下可能必须添加该选项(ffmpeg如果需要,控制台输出会警告您)。这将使用与所有播放器兼容的色度子采样方案。


2
ffmpeg版本3.2.2告诉我:Option framerate not found.:-(
erik

是的,你是对的。但是,该选项已-framerate不复存在。我将删除我的评论,因为它实际上与将一系列图像转换为具有特定帧率的视频无关。
erik

4
@erik -framerate确实存在。图像和原始视频解复用器以及某些输入设备(例如x11grab和v4l2)都使用它。
llogan

1
该选项-framerate记录在哪里?我已经阅读了该man ffmpeg页面,但是找不到。可能有指针吗?
Atcold

1
OK,找到了...... FFMPEG-DEVICES(1)
Atcold

1
ffmpeg -framerate 30 -i img%03d.png output.mp4  

在最新版本的ffmpeg中就足够了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.