ffmpeg:如何限制视频输出的比特率?

ffmpeg: How to limit bit rate of video output?

对于在绿屏前拍摄的 2GB 原始视频文件,我想添加 alpha 通道。

我的问题是:输出文件对我来说太大了(大约是输入文件大小的 20 倍),而视频编辑器 OpenShot 似乎无法处理这么大的文件。比较输入和输出的文件属性显示输入文件中的比特率约为 15k,结果文件中的比特率为 150k-250k,这似乎可以查明问题所在。

(顺便说一句,我还想丢弃剪辑的第一部分及其音频通道,并在此过程中将帧速率从 30 fps 降低到 24 fps,一切正常。)

这是我的命令:

ffmpeg.exe -i <in.MOV> -vf chromakey=0x007d06:0.15:0.0 -ss 40.420 -r 24 -b:v 15840k -maxrate 15840k -bufsize 15840k -an -c:v <encoder> <out.mov>

我理解的参数:

-i <in.mov> ... infile
-vf chromakey=0x007d06:0.15:0.0 ... chroma, tolerance & blend of greenscreens
-ss 40.420 ... skip before second 40.420 (this works)
-r 24 ... frame rate (this works, too)
-b:v 15804k ... bitrate (seemingly no effect)
-maxrate 15840k ... maximum BitRate (seemingly no effect)
-bufzise 15840k ... Buffer size (can't tell)
-an ... no audio channel (works fine)
-c:v <encoder> ... Video Encoder (ffvhuff, png, qtrle and tiff were tried, all to the same result)
<out.mov> ... outfile

b、maxrate 和 bufsize 被描述为全局选项。无论什么设置,在处理过程中比特率高达大约 3000000kbits/s (tiff) 被报告。

(我也加了-pixel_formatargb,不过这个好像也被忽略了,ffmpeg一直报写yuva420p。)

我错过了什么?

您试过的所有编码器都是无损的。您不能为无损编码器设置比特率。

尝试 VP8/9,即 -c:v libvpxlibvpx-vp9,像素格式为 -pix_fmt yuva420p。删除 bitrate/maxrate/bufsize 并设置 -crf N -b:v 0,其中 N 的范围可以从 0 到 63。尝试使用值 20。分别为 smaller/better 视频流转到 up/down。