---页首---

H.264中的 SPS、PPS、IDR

H.264码流两类数据

H.264 码流
├── 参数集(Parameter Sets) ← 描述"怎么解码"
│ ├── SPS(Sequence Parameter Set) 序列级参数
│ └── PPS(Picture Parameter Set) 图像级参数
└── 图像数据
├── IDR 帧 ← 关键帧,可独立解码
├── I 帧 ← 帧内编码帧
├── P 帧 ← 前向预测帧
└── B 帧 ← 双向预测帧

SPS(Sequence Parameter Set 序列参数集)

  1. 描述整个视频序列的全局参数

  2. 包含什么

参数 含义
profile/level 编码档次和等级(如Main@4.0)
分辨率 widthxheight(如1920x1080)
帧率相关 时间信息(VUI)里
色度格式 yuv420p/yuv444p
位深 8-bit/10-bit
参考帧数量 最多参考几帧
帧编码顺序 frame_mbs_only_flag等
  1. 作用
  • 解码器必须先拿到SPS,才知道“这段视频多大、什么格式”
  • SPS通常在每个IDR帧前重复出现,方便中途接入

PPS(Picture Parameter Set 图像参数集)

  1. 描述单帧或一组帧的编码参数

  2. 包含什么

参数 含义
熵编码模式 CAVLC 或 CABAC
量化参数偏移 QP相关
去块滤波参数 是否启用、强度
slice分组 切片如何组织
初始图像类型 I/P/B
  1. 作用
  • 告诉解码器“这一帧具体怎么解”
  • PPS依赖SPS:PPS会引用一个SPS ID
  • 一个SPS可以对应多个PPS(不同场景用不同PPS)

IDR(Instantaneous Decoder Refresh 即时解码刷新帧)

  1. 一种特殊的关键帧,也叫IDR帧。它是I帧的子集(所有IDR都是I帧,但不是所有I帧都是IDR帧)

  2. 核心特点

特点 说明
可独立解码 不依赖任何前面的帧
刷新参考缓冲 解码到IDR时,清空之前所有参考帧
后续帧的锚点 IDR之后的P/B帧只参考IDR帧
随机访问点 视频拖进度条时,播放器找的就是最近的IDR
必须带SPS/PPS 通常IDR前会重复SPS+PPS
  1. 作用
  • 支持随机访问,没有IDR,没法从中间开始播放
  • 错误恢复,丢包后,解码器等到下一个IDR就能重新同步
  • GOP起点,一个GOP(Group of Pictures)从IDR开始
  1. IDR与I帧的区别
  • I帧:帧内编码,不参考其它帧,但解码它时,可能仍需要之前的参考帧保持“可参考”状态
  • IDR帧:特殊的I帧,解码它时,强制清空所有参考帧,一切从零开始
posted @ 2026-09-15 17:07  20190311  阅读(14)  评论(0)    收藏  举报
---页脚---