阶段 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?
平均预算确实是码率除以帧率,但编码器会在时间上重新分配:关键帧和复杂帧多用,简单预测帧少用,再由缓冲模型限制峰值。
javascriptconst bitrate = 4_000_000;
const fps = 25;
const averageBitsPerFrame = bitrate / fps;
const averageKilobytes = averageBitsPerFrame / 8 / 1000;- 码率除以帧率 得到长期平均每帧可用比特数。
- 换算平均字节 4 Mbps / 25 FPS 约为每帧 20 KB。
- 允许动态分配 实际 I 帧可能远大于平均值,P/B 帧更小。
平均每帧 20 KB 是长期预算,不是单帧硬上限;峰值由码控和缓冲约束。
OPTIONAL · 按需查阅完整术语表与概念边界遇到陌生术语时再展开,不打断主线实验。
展开⌄
音视频原理GOP由随机访问点及其后预测图像组成的一组图像结构,影响压缩效率、Seek 与错误恢复。音视频原理Bitrate单位时间内传输或保存的比特数,可指平均、瞬时或峰值码率。音视频原理Rate Control编码器在画面复杂度、质量目标、码率与缓冲约束间分配比特的策略。音视频原理CBRConstant Bitrate(恒定码率)策略:让输出码率围绕固定目标,便于带宽规划,但复杂场景可能牺牲质量。音视频原理VBRVariable Bitrate(可变码率)策略:按内容复杂度改变每段比特分配,以更灵活地平衡质量和体积。音视频原理CRFConstant Rate Factor(恒定质量因子)是部分编码器的质量目标模式:复杂内容使用更多比特,最终码率不预先固定。音视频原理QPQuantization Parameter(量化参数)控制量化步长;通常 QP 越高,压缩越强、细节损失越多、码率越低。音视频原理VBVVideo Buffering Verifier(视频缓冲验证器)模型,用虚拟解码缓冲约束瞬时码率和缓冲占用,避免接收端溢出或耗尽。
LIVE EXPERIMENT · 先获得反馈
边改边运行
浏览器加载后会激活代码编辑器、独立运行环境与实时输出。
本课挑战
为 4 Mbps 网络设计一个避免缓冲下溢的编码和播放器缓冲策略。
回到原理,解释刚才发生了什么
先用结果建立反馈,再按运行流程、核心原理和知识关系逐层深入。
CORE IDEA
核心讲解
画面复杂度不断变化
静止背景容易预测,草地、雪花和快速运动需要更多残差比特。相同 QP 下瞬时码率会随内容变化。
不同模式优化不同目标
CBR 便于受限通道,VBR 在平均码率下灵活分配,CRF 倾向稳定主观质量,固定 QP 则直接控制量化但不保证体积。
OPTIONAL · 迁移时查阅Web 与原生实现对照主线实验完成后,再用完整映射处理跨平台或跨 API 迁移。
展开⌄
Web API 提供常用码率旋钮,原生编码器常允许更细的 VBV、GOP 和 QP 控制。
WebGL
FFmpeg AVCodecContext 与私有选项可配置 bit_rate、rc_buffer_size、CRF、maxrate 等。
WebGPU
MediaRecorder 可设置 bitsPerSecond;WebCodecs VideoEncoderConfig 暴露 bitrate 和 bitrateMode。
先明确交付约束是“固定体积、稳定质量、低延迟还是受限带宽”,再选码率模式。