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 知识体系图

下面这张图帮你理清三者的关系和选择路径:

码率控制模式选择路径 码率控制模式 CBR 恒定码率 VBR 可变码率 CRF 恒定质量 适用场景 直播推流、带宽受限 CDN 要求稳定码率 适用场景 直播(1-pass)/ 点播(2-pass) 画质与码率平衡 适用场景 离线转码、视频存档 追求极致画质 选择建议 直播用 CBR 或 1-pass VBR | 点播用 2-pass VBR 或 CRF

3.6 实际项目中的选择建议

说了这么多理论,最后给点实在的。我这些年做过的项目,总结下来就几条:

  1. 直播推流:优先用 CBR。平台要求是一方面,更重要的是 CBR 的码率波动小,不容易被 CDN 限流或断流。如果平台支持 VBR,可以用 1-pass VBR,但一定要设好最大码率上限。
  2. 点播转码:追求画质用 CRF 23,追求文件大小用 2-pass VBR。我个人习惯是:存档用 CRF 18,分发用 2-pass VBR 设目标码率。
  3. 移动端:屏幕小,码率可以适当降低。CRF 28 或者 VBR 目标码率降低 30% 都行。
  4. 高动态场景:体育赛事、游戏直播,建议用 VBR。CBR 在这种场景下画质下降太明显,观众一眼就能看出来。

一个小技巧:如果你不确定选哪个,可以先跑一小段测试。拿你实际要推的内容,分别用 CBR 和 VBR 编码 30 秒,对比画质和文件大小。我每次接新项目都这么干,比看任何文档都管用。

好了,码率控制模式就聊到这儿。记住一句话:没有最好的模式,只有最适合你场景的模式。选对了,画质和码率就能握手言和。