Visual LabINTERACTIVE LEARNING
阶段 2 · 压缩编码基础22 分钟

码率控制:体积、画质与延迟的三角关系

Bitrate、CBR、VBR、CRF、QP 与 VBV Buffer

理解编码器如何为简单和复杂画面分配比特,以及 CBR、VBR、CRF、QP 和缓冲模型分别解决什么问题。

LEARNING GOALS

先明确本课目标

1

区分目标码率与瞬时码率

2

理解 CBR/VBR/CRF/QP

3

解释 VBV 如何约束峰值与缓冲

MENTAL MODEL · 再建立心智模型

码率控制像分配旅行预算:简单场景少花,复杂场景多花;网络和解码缓冲则规定钱包不能突然支出过快。

MINIMAL EXAMPLE

4 Mbps、25 FPS 是否意味着每帧固定 20 KB?

平均预算确实是码率除以帧率,但编码器会在时间上重新分配:关键帧和复杂帧多用,简单预测帧少用,再由缓冲模型限制峰值。

最小例子javascript
const bitrate = 4_000_000;
const fps = 25;
const averageBitsPerFrame = bitrate / fps;
const averageKilobytes = averageBitsPerFrame / 8 / 1000;
  1. 码率除以帧率 得到长期平均每帧可用比特数。
  2. 换算平均字节 4 Mbps / 25 FPS 约为每帧 20 KB。
  3. 允许动态分配 实际 I 帧可能远大于平均值,P/B 帧更小。

平均每帧 20 KB 是长期预算,不是单帧硬上限;峰值由码控和缓冲约束。

本课概念
OPTIONAL · 按需查阅完整术语表与概念边界

遇到陌生术语时再展开,不打断主线实验。

展开⌄
LIVE EXPERIMENT · 先获得反馈

边改边运行

浏览器加载后会激活代码编辑器、独立运行环境与实时输出。

本课挑战

为 4 Mbps 网络设计一个避免缓冲下溢的编码和播放器缓冲策略。

DEEP DIVE · 实验之后

回到原理,解释刚才发生了什么

先用结果建立反馈,再按运行流程、核心原理和知识关系逐层深入。

CORE IDEA

核心讲解

01

画面复杂度不断变化

静止背景容易预测,草地、雪花和快速运动需要更多残差比特。相同 QP 下瞬时码率会随内容变化。

02

不同模式优化不同目标

CBR 便于受限通道,VBR 在平均码率下灵活分配,CRF 倾向稳定主观质量,固定 QP 则直接控制量化但不保证体积。

OPTIONAL · 迁移时查阅Web 与原生实现对照

主线实验完成后,再用完整映射处理跨平台或跨 API 迁移。

展开⌄
API COMPARISON

Web API 提供常用码率旋钮,原生编码器常允许更细的 VBV、GOP 和 QP 控制。

WebGL

FFmpeg AVCodecContext 与私有选项可配置 bit_rate、rc_buffer_size、CRF、maxrate 等。

WebGPU

MediaRecorder 可设置 bitsPerSecond;WebCodecs VideoEncoderConfig 暴露 bitrate 和 bitrateMode。

先明确交付约束是“固定体积、稳定质量、低延迟还是受限带宽”,再选码率模式。