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

标签 video ffmpeg bitrate

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

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

(顺便说一句,我还想丢弃剪辑的第一部分及其音频 channel ,并在此过程中将帧速率从 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_format argb,但是这个,似乎也被忽略了,ffmpeg总是报告写入yuva420p。)

我错过了什么?

最佳答案

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

尝试 VP8/9,即 -c:v libvpxlibvpx-vp9,像素格式为 -pix_fmt yuva420p。删除比特率/最大速率/bufsize 并设置 -crf N -b:v 0,其中 N 的范围从 0 到 63。尝试使用值 20。向上/向下以获得更小/更好的视频流分别。

关于video - ffmpeg:如何限制视频输出的比特率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43044682/

相关文章:

c++ - 为什么 HBITMAP 是倒置的

matlab - movie2avi - 如何修复帧大小?

ffmpeg - 使用 ffmpeg 同时重新缩放和放慢电影

ffmpeg - 是否可以使用 ffmpeg 添加文本/图像水印?

ffmpeg转换增加比特率

ios - 如何计算视频的比特率?

php - 来自自定义 ZM 分支的 MP4 视频上的 Zoneminder 水印

google-app-engine - 从 Google Cloud 流式传输视频

video - 获取 youtube 视频播放的当前时间

python每秒平均比特率