来自某多媒体群群友替小白答疑解惑的聊天记录
Q:如何让视频文件小并且画质好?
A: 首先,终极目标是让最终文件体积更小 且 画质更好。 但这两者在技术水平不变的情况下,是互相矛盾的两个维度。
整体来看,编码器一般提供两种控制方式:
说白了,就是在这两个矛盾的维度之间取舍—— 保证其中一个维度达到你设定的目标值,而另一个则尽力优化(best effort)。
CBR(Constant Bitrate): 严格控制视频在每一时刻的码率为固定值,不论画面内容复杂与否。
VBR(Variable Bitrate): 提供一些码率控制参数,常见的是“期望平均码率”和“允许最高码率”。 编码器会努力让整个视频平均码率符合前者,而瞬时最高码率不超过后者。
CRF(Constant Rate Factor): 一个没有实际物理意义的“魔法值”,用于描述某种不严谨的计算方式下的“画质”。 从 0 开始:越低画质越好,越高画质越差。 每增加 1,画质大约变差一倍。 编码器会严格控制视频每一时刻的“画质”为该固定值。
⚠️ 注意:它是一个过程量,因此并不能完全决定最终画质。
CQP(Constant Quantization Parameter): 我觉得你用不到,用了不要找我。
组合控制: 由于 CRF 并不直接控制最终画质,很多编码器支持将码率控制与质量控制结合使用, 例如:CBR + CRF 或 VBR + CRF 组合方式。
由于人类科技的限制,画质评价仍然是一个 计算量极大 的任务。 因此,没有编码器能够像 CBR 那样严格地控制画质。
虽然理论上(通常用于编码器开发内部 benchmarking) 可以仅使用质量控制参数进行编码, 但在绝大多数实际场景中:
从直觉上看,质量控制应该是先验的(编码时决定信息损失量), 而码率控制反而更难先验(下一帧画面的信息量对编码器来说是未来的信息)。
那实践上是怎么做到 CBR 的呢? 答案是 —— 2-pass / padding。
Created By 三三好记性不如烂 Wiki - 人工大脑CC BY-SA or CC BY-NC-SA 4.0