2. 视频编码基础
学习 H.264 与 H.265 之前,必须先建立一套“视频数据的度量体系”。编码器做的每一件事——预测、变换、量化、熵编码——最终都作用在这些基础参数上。理解它们,才能看懂码率为什么变化、画质为什么损失、参数为什么这样配置。
一、像素、分辨率与帧率:视频的时空骨架
像素是数字图像的最小单位,每个像素记录一个或多个颜色分量。像素本身不携带“亮度值”这一说法,它携带的是采样后的数值,例如 8 位下亮度 Y 取值 0~255。
分辨率描述一帧图像横向与纵向的像素数量,如 1920×1080。它决定空间细节上限。注意区分“显示分辨率”和“编码分辨率”:编码器实际处理的是后者,两者可以不同。
帧率(fps)表示每秒播放的图像帧数。帧率越高,运动越流畅,但单位时间需要编码的帧数也越多。常见有 24、25、30、50、60 fps。
二、色彩空间与 YUV 格式:从 RGB 到亮度/色度分离
人眼对亮度敏感、对色度不敏感,因此视频编码普遍采用 YUV 色彩空间:Y 表示亮度,U、V 表示色度。RGB 转 YUV 的常用公式(BT.601)为:
Y = 0.299R + 0.587G + 0.114B
U = -0.169R - 0.331G + 0.500B + 128
V = 0.500R - 0.419G - 0.081B + 128
YUV 的关键优势是亮度与色度可分离处理,从而允许对色度降采样,大幅减少数据量。常见 YUV 格式有 YUV420、YUV422、YUV444,数字表示三个分量的采样比例。
三、采样格式与位深:色度降采样与精度
采样格式决定色度相对亮度的采样密度。以 4 个像素为一行参考:
- YUV444:每个像素都有独立 Y、U、V,无色度损失,数据量最大。
- YUV422:水平方向每 2 个像素共享一组 U、V,色度水平减半。
- YUV420:水平与垂直方向均每 2 个像素共享一组 U、V,色度面积减为 1/4,是 H.264/H.265 最主流的格式。
位深指每个分量用多少比特表示。8 位时 Y 有 256 级,10 位时有 1024 级。位深越高,渐变越平滑,越不易出现色带,但数据量和计算量也上升。H.265 的 Main 10 Profile 即支持 10 位。
四、码率与压缩比:编码结果的量化指标
码率(bitrate)是单位时间编码后的数据量,单位通常为 kbps 或 Mbps。它分为:
- CBR(恒定码率):输出码率基本恒定,适合固定带宽传输。
- VBR(可变码率):按画面复杂度分配码率,画质更稳定。
- ABR(平均码率):在较长时间窗口内平均码率受控。
压缩比 = 原始数据量 ÷ 压缩后数据量。例如 1080p30 原始约 746 Mbps,编码为 4 Mbps,压缩比约 186:1。压缩比越高,节省带宽越多,但画质损失风险也越大。
五、核心参数速查表
| 术语 | 含义 | 典型值/示例 | 对编码的影响 |
|---|---|---|---|
| 像素 | 图像最小采样单位 | Y=0~255(8 位) | 决定单帧原始数据量 |
| 分辨率 | 一帧的宽×高像素数 | 1920×1080、3840×2160 | 越高细节越多,码率需求越大 |
| 帧率 | 每秒图像帧数 | 24/25/30/60 fps | 越高运动越流畅,码率越高 |
| 色彩空间 | 颜色表示方式 | RGB、YUV | YUV 利于亮度色度分离压缩 |
| 采样格式 | 色度相对亮度的采样密度 | YUV420、YUV422、YUV444 | 420 数据量最小,最常用 |
| 位深 | 每分量比特数 | 8 bit、10 bit | 越高渐变越平滑,数据量越大 |
| 码率 | 单位时间编码数据量 | 4 Mbps、8 Mbps | 直接决定带宽与画质平衡 |
| 压缩比 | 原始数据量÷压缩后数据量 | 约 100:1~300:1 | 越高越省带宽,损失风险越大 |
六、案例与常见误区
案例:一段 1080p30、YUV420、8 位视频,原始码率约 746 Mbps。若目标是在 4 Mbps 下传输,压缩比约 186:1。编码器需要依靠帧内预测、帧间运动补偿、DCT 变换、量化与熵编码共同完成这一压缩。
误区一:分辨率越高画质一定越好。若码率不足,高分辨率反而因量化过重出现块效应,观感可能不如低分辨率高码率。
误区二:YUV420 就是“颜色少了一半”。它减少的是色度采样密度,不是颜色种类;由于人眼特性,多数场景下观感损失很小。
误区三:位深只影响颜色数量。位深还影响变换与预测的精度,10 位在暗部渐变和多次编码场景中优势明显。
掌握这些基础量之后,后续学习帧内预测、帧间预测、变换量化时,就能清楚每一步在“压缩比—画质—码率”三角中扮演什么角色。它们是理解 H.264 与 H.265 所有高级工具的起点。