1. 码率是什么?
码率——Bitrate,指单位时间内传输或处理的数据量。
单位:
单位是bps(bits per second),即“比特每秒”。常见衍生单位有:
- kbps(千比特/秒,1 kbps = 1000 bps)
- Mbps(兆比特/秒,1 Mbps = 1000 kbps)
- 文件大小常用kB/s(千字节/秒),1 Byte = 8 bits
核心公式:
文件大小 = 码率 × 时长 / 8比如:一段 60 秒、码率 2 Mbps 的视频,大约占用 15 MB 空间(2 Mbps × 60s ÷ 8)。
码率直接决定了三个东西:
- ⬆️画质 / 音质:越高越清晰,但边际收益递减
- ⬆️文件大小:成正比
- ⬆️传输带宽要求:越高越容易卡顿
2. 固定码率 vs 可变码率
编码器通常会让你在两种基础策略中二选一:
| 策略 | 英文 | 思路 | 优点 | 缺点 |
|---|---|---|---|---|
| 固定码率 | CBR(Constant Bitrate) | 全程保持一个恒定码率 | 码率稳定,适合直播 | 简单场景浪费带宽,复杂场景画质变差 |
| 可变码率 | VBR(Variable Bitrate) | 简单画面给低码率,复杂画面给高码率 | 整体文件更小、画质更均匀 | 码率波动大,瞬时高码率可能超过带宽上限 |
简单场景(白墙、静态 PPT)不需要高码率也能压缩得很好;复杂场景(运动会、花丛飞舞)则需要更多数据才能保留细节。VBR 就是利用了这个原理。
3. 码率控制:不只“定死”,还要“管活”
码率控制不是简单的码率值设定,而是编码器对码率进行动态管理的一整套算法,核心解决两个问题:
- ❓给多少:每一帧分配多少比特
- ❓怎么控:如何既满足画质要求,又不超过带宽或文件大小限制
最常见的控制模式如下(⚠️ 不同编码器之间命名差异较大,本质都是在下面几种数学框架里做变体):
3.1 CBR(恒定码率)
编码器尽力让每一秒的码率保持恒定。
👉适用场景:直播推流(如 RTMP),带宽稳定的场景。
3.2 ABR(平均码率)
整个文件最终的平均码率达到目标值即可,允许局部波动,比纯 CBR 灵活。
👉适用场景:视频网站点播。
3.3 受限 VBR(Capped VBR)
在 VBR 的基础上设一个“天花板”——瞬时码率不允许超过某个上限。
👉适用场景:既想要 VBR 的画质优势,又不希望瞬间流量冲垮播放器的场景(比如硬件播放设备对峰值码率有限制)。
3.4 CRF(恒定质量)
编码器不关心码率是多少,只保证每一帧的视觉质量恒定。画质好的场景码率自动低,画质复杂的场景码率自动飙高。最终码率完全由画面复杂度决定。
👉适用场景:本地存档、后期处理、离线转码;不适合直播,因为码率完全不可预测。
3.5 CQP(恒定量化参数)
用固定量化参数(如 H.264/AVC 中的 QP)来编码,量化参数决定了压缩强度,从而间接控制码率。
👉适用场景:编码器测试、算法研究,实际应用中较少直接使用。
下面这张图帮你理清它们的关系:
4. 到底怎么选?(一句话指南)
| 你的场景 | 推荐 | 理由 |
|---|---|---|
| 直播推流 | CBR 或 ABR | 带宽必须稳定 |
| 视频站点播 | ABR 或受限 VBR | 质量与带宽的折中 |
| 本地高质量存档 | CRF(推荐 16~23) | 不关心码率,只在乎画质 |
| 硬件播放设备 | 受限 VBR | 峰值码率不能超过芯片解码上限 |
| 编码器研究/测试 | CQP | 需要精确控制每帧压缩强度 |
🔧 所有模式都围绕同一个博弈:画质、文件大小、带宽稳定性——你只能同时满足其中两个。
最后总结一句话:
- 码率是每秒钟花掉的数据量(单位:bps)
- 码率控制是一整套分配数据的策略(CBR稳住它、VBR省空间、CRF保证画质)
- 没有万能模式,只有适合你场景的取舍