【音视频】H.264关键帧识别
判断H.264关键帧(I帧),核心是解析NALU头部的nal_unit_type字段。
关键帧判断准则
| 关键要素 | 核心值 | 说明 |
|---|---|---|
NALU类型 (nal_unit_type) | 5 | 该值对应IDR帧,即关键帧。 |
| 对应的十六进制值 | 0x65 | 常见的NALU头字节,其低5位为00101,即十进制5。 |
| 起始码 | 00 00 01 或 00 00 00 01 | 关键帧NALU前的分隔符,用于定位NALU起始位置。 |
如何操作
- 定位NALU起始码:在H.264码流中寻找
00 00 01或00 00 00 01的序列,这标志着一个NALU的开始。 - 读取NALU头:起始码后的第一个字节就是NALU头。
- 提取类型字段:对NALU头字节(例如
0x65)执行按位与操作:nal_unit_type = nalu_header & 0x1F。 - 判断关键帧:如果得到的
nal_unit_type等于 5,那么这个NALU就是关键帧(IDR帧)。
一句话总结:在H.264码流中,找到起始码后,若紧接着的字节与0x1F相与的结果为5,则该NALU为关键帧。
