视频压缩基础:从 MPEG-1 到 H.264/AVC
视频本质上是连续的图像帧序列。如果对每帧独立压缩(如 Motion JPEG),压缩效率很低,因为相邻帧之间通常存在极强的相似性——这就是时间冗余。
视频压缩的核心突破在于:不再独立编码每帧,而是利用帧间的时间相关性,只编码帧与帧之间的"变化"。这个思想催生了运动估计(Motion Estimation)和运动补偿(Motion Compensation)技术,使视频压缩比比单纯的空间压缩提高了 10–100 倍。
本篇将从视频压缩的基本概念讲起,讲解从 MPEG-1 到 H.264/AVC 的标准演进。H.264 的详细技术原理(宏块划分、帧内/帧间预测、整数 DCT、量化、CABAC/CAVLC、环路滤波、Profile/Level)已独立为专题文章:
📖 H.264 专题
H.264 的完整编码原理已独立为 图像压缩基础系列(八):H.264 视频编码原理详解,按 12 个专题系统拆解:数字视频基础、数据冗余、YUV 色彩空间、帧类型、GOP 与 NAL 层结构、帧内预测、帧间预测、DCT 变换、量化与熵编码。
1. 空间冗余(Spatial Redundancy):同一帧内相邻像素的相关性
2. 时间冗余(Temporal Redundancy):相邻帧之间像素的相关性
3. 视觉冗余(Visual Redundancy):人眼对某些信息不敏感
空间冗余的消除方法与图像压缩相同(DCT/小波变换 + 量化)。时间冗余的消除则需要帧间预测和运动估计。
视频编码将帧分为三种类型:
| 帧类型 | 名称 | 编码方式 | 特点 |
|---|---|---|---|
| I 帧 | Intra-coded | 仅帧内编码(类似 JPEG) | 独立解码,文件最大 |
| P 帧 | Predicted | 帧间预测(参考前面的帧) | 文件较小,需要参考帧 |
| B 帧 | Bi-directional | 双向预测(参考前后帧) | 文件最小,压缩比最高 |
GOP 定义了 I、P、B 帧的排列模式。一个典型的 GOP 结构:
I B B P B B P B B P B B I
GOP 的长度(两个 I 帧之间的帧数)通常为 12–30 帧。GOP 越长,压缩比越高(因为 P/B 帧占比更大),但随机访问能力越差(需要从最近的 I 帧开始解码)。
运动估计是视频压缩的核心技术。其基本思想:
1. 运动估计:在参考帧中搜索与当前块最匹配的区域,记录偏移量(运动矢量)
2. 运动补偿:用参考帧中匹配区域的像素作为当前块的预测值
3. 残差编码:只编码当前块与预测值之间的差值(残差)
运动矢量(Motion Vector, MV)描述了当前块在参考帧中的位移。如果运动估计准确,残差的能量远小于原始像素值,可以用很少的比特编码。
块匹配算法最常用的运动估计方法是块匹配(Block Matching)。对于当前帧中的每个块,在参考帧的搜索窗口内寻找最佳匹配:
常用的匹配准则:
- SAD(Sum of Absolute Differences):计算简单,最常用
- SATD(Sum of Absolute Transformed Differences):更准确,计算量稍大
- MSE(Mean Squared Error):数学性质好,但计算量大
搜索算法从全搜索(穷举所有可能的 MV)到快速搜索(三步搜索、菱形搜索等),在速度和精度之间权衡。
亚像素运动估计真实的运动往往不是整像素的整数倍。视频编码器支持亚像素精度的运动估计:
- 半像素:在整像素位置之间插值(H.264 使用 6-tap FIR 滤波器)
- 四分之一像素:在半像素位置之间进一步插值(H.264 支持)
亚像素插值提高了运动估计的精度,减少了残差能量。
运动估计的精度和速度由搜索算法决定。三种常用匹配准则的权衡:
| 准则 | 计算公式 | 精度 | 速度 |
|---|---|---|---|
| SAD | $\sum |I_c - I_r|$ | 中 | 最快 |
| SATD | $\sum |\text{HAD}(I_c - I_r)|$ | 高 | 中 |
| MSE | $\frac{1}{N^2}\sum (I_c - I_r)^2$ | 高 | 最慢 |
其中 $\text{HAD}$ 是 Hadamard 变换。SATD 在率失真意义上更接近最优,广泛用于 H.264/HEVC 的模式决策。
三步搜索(TSS)的步骤:1. 以当前块位置为中心,第一步搜索 8 个步长为 4 的候选位置
2. 找到最小 SAD 的位置作为新中心,第二步搜索步长为 2 的 8 个位置
3. 第三步搜索步长为 1 的 8 个位置
搜索范围(Search Range)通常为 ±16 到 ±64 像素。搜索范围越大压缩比越高,但计算量以 $O(SR^2)$ 增长。
菱形搜索(DS)利用运动矢量通常接近零的特点,优先搜索中心附近:1. 以当前块为中心,搜索大菱形模板(9 个点)的 SAD
2. 最小 SAD 点成为新中心;若最小点在菱形中心则进入小菱形模板
3. 重复直到中心为最小点
菱形搜索的平均搜索点数远少于 TSS,在自然视频中通常更高效。
MPEG-1 是第一个成功的视频压缩标准,用于 VCD(Video CD)和 CD-ROM 存储。
关键特征:
- 分辨率:352×240(NTSC)或 352×288(PAL)
- 码率:1.5 Mbps
- 帧类型:I、P、B
- 变换:8×8 DCT
- 运动补偿:16×16 宏块,半像素精度
- 熵编码:Huffman
MPEG-2 是 MPEG-1 的增强版,用于 DVD、数字电视和蓝光光盘。
关键改进:
- 支持隔行扫描视频
- 分辨率最高 1920×1080
- 码率最高 80 Mbps
- 更灵活的帧间预测(支持场预测和帧预测)
- 支持可变长编码
H.263 为低码率通信(如视频会议)设计。
关键改进:
- 更灵活的宏块划分(支持 8×8 块的运动补偿)
- 改进的运动预测(非限制运动矢量)
- 更高效的熵编码
MPEG-4 引入了基于对象的编码概念,但在实践中大多数实现仍使用基于块的编码。
H.264 是视频压缩的里程碑标准,由 ITU-T VCEG 和 ISO/IEC MPEG 联合开发(Joint Video Team, JVT)。它在 MPEG-2 的基础上提供了约 50% 的压缩效率提升,至今仍是使用最广泛的视频编码标准。
📖 H.264 详细技术原理
H.264 的完整编码架构(宏块划分、帧内/帧间预测、整数 DCT、量化、CABAC/CAVLC、环路滤波、多参考帧、Profile/Level)已独立为专题文章:图像压缩基础系列(八):H.264 视频编码原理详解。该文按 12 个专题系统拆解 H.264 的全部核心技术模块。
参考来源
- Richardson, I. E. G. (2010). The H.264 Advanced Video Compression Standard (2nd ed.). Wiley.
- ITU-T H.264 (2021). "Advanced Video Coding for Generic Audiovisual Services".
- Wiegand, T., et al. (2003). "Overview of the H.264/AVC Video Coding Standard". IEEE Transactions on Circuits and Systems for Video Technology, 13(7), 560–576.
- Vcodex (2024). "Historical Timeline of Video Coding Standards and Formats".
- MPEG (1993). ISO/IEC 11172-2, "Coding of Moving Pictures and Associated Audio".
本篇是基础系列的第五篇。
- H.264 专题:H.264 视频编码原理详解(12 个专题系统拆解)
- H.265 专题:H.265/HEVC 技术深度解析(12 个专题对照 H.264 拆解)