一句话说透计算机视频编码里面的H264的编码结构

223 阅读2分钟

H.264的编码结构就像一本精装书,分层级、有目录、分章节,每一页都按固定格式排版,方便快速查找和阅读!


一、整本书的结构(视频序列层)

  1. 封面和目录(SPS/PPS)

    • SPS(序列参数集) :全书基本信息(分辨率、帧率、编码配置)。
    • PPS(图像参数集) :单章解码参数(量化表、熵编码方式)。
    • 作用:解码器必须先读这两部分,才能正确“阅读”后续内容。
  2. 章节(GOP,图像组)

    • 由一组连续的帧组成,以I帧开头(关键页,独立完整)。
    • 长度可变:比如一个GOP包含10秒的视频片段。

二、每一章的内容(帧和切片层)

  1. 页类型(帧类型)

    • I帧:完全独立的一页(如章节封面),不依赖其他页。
    • P帧:参考前一页内容(如“接上页,主角向右移动5步”)。
    • B帧:同时参考前后页(如“结合前页和后页,补全动作”)。
  2. 段落(Slice,切片)

    • 将一帧切割成多个独立段落(如16x16宏块组成的水平条带)。
    • 作用:网络丢包时,只影响个别段落,而非整帧。

三、段落的细节(宏块和子块层)

  1. 段落中的句子(宏块,16x16像素)

    • 记录内容

      • 预测模式(帧内/帧间)。
      • 运动矢量(移动方向和距离)。
      • 残差数据(实际像素与预测的差值)。
  2. 句子的修辞(子块,4x4或8x8)

    • 对宏块进一步细分,适应不同细节复杂度。
    • 例子:人脸区域用更小的子块(保留眼睛细节),纯色背景用大子块。

四、H.264高效压缩的秘诀

  1. 分层管理

    • 参数集(SPS/PPS)全局复用,避免重复存储。
    • 帧、切片、宏块独立处理,灵活应对不同场景。
  2. 预测技术

    • 帧内预测:同一页内找规律(如“右边颜色和左边一致”)。
    • 帧间预测:跨页找相似(如“这一页的背景和上一页相同”)。
  3. 精细控制

    • 多参考帧(允许参考更早的帧,提升运动估计精度)。
    • CABAC熵编码(用概率模型进一步压缩数据)。

五、实例图解(H.264码流结构)

[视频流]  
├── SPS(分辨率1920x1080,帧率30)  
├── PPS(量化表参数)  
├── GOP1  
│   ├── I帧(切片1~N,携带完整画面)  
│   ├── P帧(参考GOP1的I帧)  
│   └── B帧(参考前后帧)  
├── GOP2  
│   ├── I帧  
│   └── ...  

六、总结口诀

“H.264结构像书籍,SPS/PPS是目录。
I帧开篇立基准,P/B帧接续省篇幅。
切片分块防丢包,宏块细分抓局部。
分层压缩效率高,视频流畅又苗条!”