Answers:
我正在使用下面的代码来做同样的事情。
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
选项)。
默认情况下,输入帧速率为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
如果需要,控制台输出会警告您)。这将使用与所有播放器兼容的色度子采样方案。
Option framerate not found.
:-(
-framerate
不复存在。我将删除我的评论,因为它实际上与将一系列图像转换为具有特定帧率的视频无关。
-framerate
确实存在。图像和原始视频解复用器以及某些输入设备(例如x11grab和v4l2)都使用它。
-framerate
记录在哪里?我已经阅读了该man ffmpeg
页面,但是找不到。可能有指针吗?
FFMPEG-DEVICES(1)
。