码率控制:CRF、CBR 与 VBR
本教程共 32 篇 · 第 19 篇 · 更新于 2026-08-09 · 约 5 分钟阅读
本节目标:看懂三种码率控制模式各自适合什么场景,会用 CRF 一把梭压片,也会用 two-pass 精确命中目标体积。
码率(bitrate)就是每秒视频用多少数据来表示。码率越高,画质越好,文件越大。但”每秒给多少”这件事,编码器可以有不同的给法,这就是码率控制模式。
一、三种模式一句话讲清
| 模式 | 全称 | 特点 | 适用场景 |
|---|---|---|---|
| CRF | Constant Rate Factor | 恒定质量,码率随画面复杂度浮动 | 本地存档、压片、绝大多数场景 |
| CBR | Constant BitRate | 恒定码率,每秒给的比特数固定 | 直播、流媒体、带宽受限 |
| VBR | Variable BitRate | 可变码率,复杂场景多给、简单场景少给 | 目标体积可控的存储 |
CRF 保持质量稳定,文件大小不可预测;CBR 保持码率稳定,质量在复杂画面会波动;VBR 在两者之间折中。
二、CRF:最常用的一把梭
CRF 是 x264/x265/libvpx 等软件编码器提供的恒定质量模式。给一个 0–51 的数值,编码器自动分配码率:画面复杂就多给,画面简单就少给,最终让整个视频的主观质量保持一致。
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
CRF 值越小质量越高:
- 0:无损(文件极大,不常用)
- 18:视觉无损,人眼几乎看不出和原片区别
- 23:默认值,画质与体积的良好平衡
- 28:可接受但能看出压缩痕迹
- 51:最差
Tip日常压片从 CRF 22–24 开始试。觉得画质不够就往小调 1–2 个点,觉得文件太大就往大调。CRF 是对数尺度,+6 左右码率大约翻倍/减半。
CRF 的缺点是文件大小不可精确预测。动作场面多的影片会比动画片大不少,但这是合理的——它把比特花在了刀刃上。
不同编码器的 CRF 范围不一样
libx264(H.264):0–51,默认 23libx265(HEVC):0–51,默认 28(同体积下画质比 x264 好,所以默认值更高)libvpx-vp9:0–63,默认 30,数值方向一致但粒度不同libaom-av1:0–63,常用 30 左右
不要跨编码器直接比较 CRF 数字。x265 的 CRF 28 不等于 x264 的 CRF 28 画质。
三、CBR:直播场景的刚需
直播推流要求码率稳定,否则观众端一会卡一会糊。CBR 用 -b:v 设定目标码率,再用 -maxrate 和 -bufsize 约束波动:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -maxrate 4000k -bufsize 8000k -f flv rtmp://live.example.com/app/stream
-b:v 4000k:目标视频码率 4 Mbps-maxrate 4000k:最大码率不超过 4 Mbps(设成和-b:v一样即接近 CBR)-bufsize 8000k:码率控制缓冲区,一般设为-b:v的 1–2 倍。缓冲区越大,编码器越能在短时间内波动;越小越接近严格 CBR。
CBR 不适合本地存储,因为它在简单画面上浪费码率,复杂画面又可能不够用。
四、VBR 与 ABR
VBR 有两种常见用法。一种是直接给一个平均码率:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k output.mp4
只写 -b:v 时,x264 默认使用 ABR(Average BitRate),让整段视频平均码率接近目标值,但允许局部波动。它的质量不如 CRF 稳定,但文件大小更可控。
更精确的做法是两遍编码(two-pass),让编码器先扫描一遍全片了解复杂度分布,第二遍再精确分配码率:
# 第一遍:分析,不输出文件
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -pass 1 -an -f null /dev/null
# 第二遍:编码,输出音频视频
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -pass 2 -c:a aac -b:a 128k output.mp4
Windows 下把 /dev/null 换成 NUL。
Two-pass 适合目标文件大小确定的场景,比如”把这部 2 小时的电影压到 700 MB 以内”。算法是:
目标视频码率(kbps) = (目标文件大小MB × 8192) ÷ 时长秒 − 音频码率
日常压片用 CRF 就够了,two-pass 慢一倍,只有在体积有硬指标时才值得。
五、怎么选
- 不知道选啥 → CRF。本地存档、分享、二次剪辑,CRF 永远是第一选择。
- 直播推流 → CBR,配
-maxrate和-bufsize。 - 必须压到指定大小 → two-pass VBR。
- 流媒体点播 → 可以用 CRF 配合上限码率(
-crf 23 -maxrate 5000k -bufsize 10000k),兼顾质量和突发码率控制。
NoteCRF 和
-b:v同时写时,大多数编码器会忽略-b:v,以 CRF 为准。别两个一起写,行为反而不确定。