H.264的编码结构就像一本精装书,分层级、有目录、分章节,每一页都按固定格式排版,方便快速查找和阅读!
一、整本书的结构(视频序列层)
-
封面和目录(SPS/PPS) :
- SPS(序列参数集) :全书基本信息(分辨率、帧率、编码配置)。
- PPS(图像参数集) :单章解码参数(量化表、熵编码方式)。
- 作用:解码器必须先读这两部分,才能正确“阅读”后续内容。
-
章节(GOP,图像组) :
- 由一组连续的帧组成,以I帧开头(关键页,独立完整)。
- 长度可变:比如一个GOP包含10秒的视频片段。
二、每一章的内容(帧和切片层)
-
页类型(帧类型) :
- I帧:完全独立的一页(如章节封面),不依赖其他页。
- P帧:参考前一页内容(如“接上页,主角向右移动5步”)。
- B帧:同时参考前后页(如“结合前页和后页,补全动作”)。
-
段落(Slice,切片) :
- 将一帧切割成多个独立段落(如16x16宏块组成的水平条带)。
- 作用:网络丢包时,只影响个别段落,而非整帧。
三、段落的细节(宏块和子块层)
-
段落中的句子(宏块,16x16像素) :
-
记录内容:
- 预测模式(帧内/帧间)。
- 运动矢量(移动方向和距离)。
- 残差数据(实际像素与预测的差值)。
-
-
句子的修辞(子块,4x4或8x8) :
- 对宏块进一步细分,适应不同细节复杂度。
- 例子:人脸区域用更小的子块(保留眼睛细节),纯色背景用大子块。
四、H.264高效压缩的秘诀
-
分层管理:
- 参数集(SPS/PPS)全局复用,避免重复存储。
- 帧、切片、宏块独立处理,灵活应对不同场景。
-
预测技术:
- 帧内预测:同一页内找规律(如“右边颜色和左边一致”)。
- 帧间预测:跨页找相似(如“这一页的背景和上一页相同”)。
-
精细控制:
- 多参考帧(允许参考更早的帧,提升运动估计精度)。
- CABAC熵编码(用概率模型进一步压缩数据)。
五、实例图解(H.264码流结构)
[视频流]
├── SPS(分辨率1920x1080,帧率30)
├── PPS(量化表参数)
├── GOP1
│ ├── I帧(切片1~N,携带完整画面)
│ ├── P帧(参考GOP1的I帧)
│ └── B帧(参考前后帧)
├── GOP2
│ ├── I帧
│ └── ...
六、总结口诀
“H.264结构像书籍,SPS/PPS是目录。
I帧开篇立基准,P/B帧接续省篇幅。
切片分块防丢包,宏块细分抓局部。
分层压缩效率高,视频流畅又苗条!”