2. 视频编码基础
要理解 H.265 为什么能比 H.264 再省一半码率,必须先回到视频编码最底层的几个概念:视频到底是什么、数字视频由哪些参数描述、压缩比又是如何被定义的。本节把这些基础概念串成一条完整的认知链路,为后续的预测、变换、量化、熵编码打下地基。
一、从模拟信号到数字视频:采样、量化、编码
早期的视频是模拟信号,摄像机把光强转换为连续变化的电压波形,通过同轴电缆传输。模拟信号的问题是:每复制一次就劣化一次,无法无损存储,也无法被计算机处理。数字视频的核心思路,是把连续的时空信号离散化,这个过程称为模数转换(A/D),包含三个关键步骤:
- 采样(Sampling):在时间轴上按固定间隔取值,把连续画面切成一张张静止图像,采样频率决定帧率。
- 量化(Quantization):把每个采样点的连续亮度值映射到有限个离散等级,例如 8 bit 对应 256 级,量化位数决定灰度精度。
- 编码(Coding):把量化后的整数按约定格式组织成二进制码流,形成可存储、可传输的数字视频。
采样和量化解决“如何变成数字”,编码解决“如何组织数字”。而视频压缩,则是在编码阶段进一步去除冗余信息。理解这一点非常关键:压缩不是改变内容,而是用更少的比特描述同样的内容。
二、像素与色彩空间:YUV 为什么比 RGB 更适合编码
数字图像的最小单位是像素。每个像素记录该位置的颜色信息。最直观的表达是 RGB,即红、绿、蓝三个分量各占 8 bit,一个像素共 24 bit。但视频编码几乎不用 RGB,而是使用 YUV 色彩空间,原因有两点:
- 亮度与色度分离:Y 表示亮度,U、V 表示色度。人眼对亮度细节敏感,对色度细节不敏感,因此可以对色度分量降采样,人眼几乎察觉不到。
- 便于压缩:色度降采样直接减少数据量,同时不影响主观质量,这是视频压缩的第一层“免费午餐”。
常见的色度采样格式有 4:4:4、4:2:2、4:2:0。其中 4:2:0 是 H.264/H.265 最常用的格式:每 4 个 Y 像素共享 1 组 U、V,色度数据量只有亮度的四分之一。以 1920×1080 为例:
Y : 1920 × 1080 = 2,073,600 个样本
U : 960 × 540 = 518,400 个样本
V : 960 × 540 = 518,400 个样本
合计: 3,110,400 个样本
若按 8 bit 计算:
4:4:4 → 1920×1080×3×8 ≈ 49.8 Mbit/帧
4:2:0 → 1920×1080×1.5×8 ≈ 24.9 Mbit/帧
可以看到,仅色度降采样就把单帧数据量减半。这也是为什么编码器内部几乎都工作在 YUV 4:2:0 上。
三、帧率与分辨率:时间与空间的双重维度
分辨率描述单帧图像的空间尺寸,常见有 720p(1280×720)、1080p(1920×1080)、4K(3840×2160)。分辨率越高,空间细节越丰富,但像素数量按面积增长:4K 的像素数是 1080p 的 4 倍。
帧率描述每秒播放多少帧,常见 24、25、30、60 fps。帧率越高,运动越流畅,但每秒需要编码的图像数量也越多。两者共同决定了视频的“原始数据量”:
原始码率 ≈ 宽 × 高 × 色度系数 × 位深 × 帧率
1080p25 4:2:0 8bit:
1920 × 1080 × 1.5 × 8 × 25 ≈ 622 Mbps
4K60 4:2:0 10bit:
3840 × 2160 × 1.5 × 10 × 60 ≈ 7.46 Gbps
这个数字非常惊人:未经压缩的 4K60 视频每秒接近 7.5 Gbit,一部两小时的电影将超过 6 TB。这正是视频编码存在的意义。
四、码率与压缩比:编码器的核心指标
码率(Bitrate)是编码后码流每秒的比特数,单位通常是 kbps 或 Mbps。它直接决定视频的传输带宽和存储成本。压缩比则是原始码率与编码码率之比:
压缩比 = 原始码率 / 编码码率
1080p25 原始约 622 Mbps
H.264 编码到 8 Mbps → 压缩比约 78:1
H.265 编码到 4 Mbps → 压缩比约 156:1
压缩比越高,说明编码器去除冗余的能力越强。但压缩比不是越高越好:过高会引入块效应、模糊、振铃等失真。实际工程中需要在码率、质量、复杂度三者之间做权衡。
| 参数 | 含义 | 典型取值 | 对编码的影响 |
|---|---|---|---|
| 分辨率 | 单帧空间尺寸 | 1280×720 / 1920×1080 / 3840×2160 | 像素越多,残差与变换块越多,码率需求越高 |
| 帧率 | 每秒帧数 | 24 / 25 / 30 / 60 fps | 帧率越高,时域预测机会越多,但总帧数增加 |
| 色彩空间 | 颜色表示方式 | YUV 4:2:0 / 4:2:2 / 4:4:4 | 4:2:0 数据量最小,是主流编码输入格式 |
| 位深 | 每样本比特数 | 8 bit / 10 bit | 10 bit 提升暗部与渐变表现,码率略增 |
| 码率 | 编码后每秒比特数 | 1–20 Mbps(1080p) | 直接决定质量与带宽,是编码控制的目标 |
| 压缩比 | 原始码率 / 编码码率 | 50:1 – 200:1 | 衡量编码效率,过高会带来可见失真 |
五、案例与场景:一次直播参数选择
假设要做一场 1080p30 的游戏直播,平台建议码率 6 Mbps。我们来反推它的压缩比与合理性:
原始码率 = 1920 × 1080 × 1.5 × 8 × 30 ≈ 746 Mbps
目标码率 = 6 Mbps
压缩比 = 746 / 6 ≈ 124:1
若使用 H.264,6 Mbps 下 1080p30 画质尚可;
若使用 H.265,同样画质可降至约 3–4 Mbps,
或保持 6 Mbps 获得更清晰的画面。
这个例子说明:码率不是孤立参数,它必须和分辨率、帧率、编码标准一起看。脱离分辨率和帧率谈码率,是没有意义的。
六、常见误区与复盘
- 误区一:码率越高画质一定越好。当码率超过内容所需的上限后,画质提升非常有限,反而浪费带宽。编码器质量还受预测模式、量化参数、参考帧等影响。
- 误区二:分辨率高就等于清晰。如果码率不足,高分辨率视频会出现大量块效应,主观清晰度可能不如低分辨率高码率。
- 误区三:忽略色度采样。4:2:0 在红色文字、细密彩色纹理上容易出现色度溢出,做字幕或 UI 内容时要特别注意。
- 误区四:把压缩比当成唯一指标。压缩比必须与质量指标(PSNR、SSIM、VMAF)一起评估,否则容易得到“体积小但没法看”的结果。