3、码率控制模式:CBR、VBR、CRF 的区别与适用场景
码率控制,说白了就是编码器怎么分配那点可怜的带宽。你想想看,同样的视频源,有人推出来清晰流畅,有人推出来满屏马赛克——很多时候不是编码器不行,是码率控制模式没选对。
我刚开始做直播那会儿,就吃过这个亏。当时给一个体育赛事做推流,图省事直接用了默认的 CBR,结果画面里球员快速跑动时,整个背景都在“糊”。后来换成 VBR,同样的平均码率,画质提升了一个档次。嗯,从那以后我再也不敢随便用默认设置了。
今天咱们就把 CBR、VBR、CRF 这三兄弟彻底聊透。它们各自怎么工作?适合什么场景?有什么坑?我一个一个说。
3.1 CBR(恒定码率)—— 稳,但浪费
CBR 的全称是 Constant Bitrate,恒定码率。编码器会尽量让每一秒的输出码率都保持在设定值附近,波动很小。
核心特点:
- 码率波动范围通常在 ±5% 以内
- 画面复杂度高时,画质会明显下降
- 画面静止时,会浪费大量码率
适用场景:
- 直播推流到 CDN(大多数平台要求 CBR)
- 网络带宽严格受限的环境(比如 4G 上行)
- 需要精确控制带宽成本的场景
避坑指南:我曾经在一个户外直播项目里用了 CBR,结果画面里树叶晃动时,码率不够用,整个画面都是块状噪声。后来我把目标码率提高了 20%,才勉强压住。CBR 的“稳”是有代价的——你得留出足够的余量。
3.2 VBR(可变码率)—— 聪明,但难控
VBR 就是 Variable Bitrate。编码器会根据画面复杂度动态调整码率:复杂场景多给,简单场景少给。
我个人习惯把 VBR 分成两种:
- 1-pass VBR:编码器边编码边决策,实时性高,但码率分配不够精准
- 2-pass VBR:先分析一遍视频,记录复杂度信息,第二遍再精确分配码率。质量最好,但耗时翻倍
| 对比项 | 1-pass VBR | 2-pass VBR |
|---|---|---|
| 编码速度 | 快 | 慢(约 2 倍时间) |
| 码率控制精度 | 一般 | 高 |
| 画质一致性 | 较好 | 优秀 |
| 适用场景 | 直播、实时推流 | 点播、离线转码 |
我的经验:做点播转码时,我几乎只用 2-pass VBR。虽然慢一点,但同样的文件大小,画质比 1-pass 好 10%-15%。直播场景没办法,只能用 1-pass,但我会把码率上限设得宽松一些,给编码器留点“呼吸空间”。
3.3 CRF(恒定质量)—— 省心,但不可控
CRF 是 Constant Rate Factor。它不关心码率,只关心画质。你设定一个质量值(通常是 18-28,数值越小质量越高),编码器自动决定用多少码率来达到这个质量。
说白了,CRF 是“结果导向”的——我不管花多少钱,就要这个画质。
CRF 值的经验参考:
- 18:视觉无损,适合存档
- 23:高质量,适合点播
- 28:可接受,适合移动端
- 35+:画质明显下降,不推荐
注意:CRF 不能用于直播推流。因为它的输出码率完全不可控,复杂场景可能瞬间飙到几十 Mbps,CDN 和播放器都受不了。我见过有人用 CRF 推流,结果服务器直接断流——码率超限了。
3.4 三者的核心对比
我整理了一张表,方便你快速对比:
| 特性 | CBR | VBR | CRF |
|---|---|---|---|
| 码率稳定性 | 极高 | 中等 | 不可控 |
| 画质一致性 | 差(复杂场景下降) | 好 | 极好 |
| 带宽利用率 | 低(浪费静止场景) | 高 | 最高 |
| 适用直播 | 是 | 是(1-pass) | 否 |
| 适用点播 | 不推荐 | 是(2-pass 最佳) | 是 |
| 编码复杂度 | 低 | 中/高 | 低 |
3.5 知识体系图
下面这张图帮你理清三者的关系和选择路径:
3.6 实际项目中的选择建议
说了这么多理论,最后给点实在的。我这些年做过的项目,总结下来就几条:
- 直播推流:优先用 CBR。平台要求是一方面,更重要的是 CBR 的码率波动小,不容易被 CDN 限流或断流。如果平台支持 VBR,可以用 1-pass VBR,但一定要设好最大码率上限。
- 点播转码:追求画质用 CRF 23,追求文件大小用 2-pass VBR。我个人习惯是:存档用 CRF 18,分发用 2-pass VBR 设目标码率。
- 移动端:屏幕小,码率可以适当降低。CRF 28 或者 VBR 目标码率降低 30% 都行。
- 高动态场景:体育赛事、游戏直播,建议用 VBR。CBR 在这种场景下画质下降太明显,观众一眼就能看出来。
一个小技巧:如果你不确定选哪个,可以先跑一小段测试。拿你实际要推的内容,分别用 CBR 和 VBR 编码 30 秒,对比画质和文件大小。我每次接新项目都这么干,比看任何文档都管用。
好了,码率控制模式就聊到这儿。记住一句话:没有最好的模式,只有最适合你场景的模式。选对了,画质和码率就能握手言和。