在上一篇文章 H.264 NALUint解析中对NALUint进行了语法结构上的分析了。这篇文章将对照上一篇的分析,结合实际的例子来一次实际的分析。

我现在用UltraEdit打开一个.h264文件
看到如下结果
H.264 NALUint 解析--实例
我们看到头四个字节的内容:
0x00 00 00 01
这就是NALUint的起始码,一直到遇到下一个起始码。我们一路看下去发下,下一个起始码出现在 0x0000001C这个地址。

所以我们的第一个NALUint就是

H.264 NALUint 解析--实例

我们解析它的第一个字节的NALU header。我们对照着NALU Header的结构定义。

H.264 NALUint 解析--实例

0x67展开成二进制格式是 ‘0110 0111’b。所以三个字段的值分别如下
forbidden_zero_bit == 0
nal_ref_idc == 3
nal_unit_type == 7
根据nal_unit_type的值是7我们可以知道这是一个 Sps(Sequence parameter set)序列参数集

再之后又是一个NALUint

H.264 NALUint 解析--实例

根据第一个字节的NALUint header的值 0x68可知。
nal_ref_idc == 3
nal_unit_type == 8
其对应的NALUint 为Pps (Picture parameter set) 图像参数集

再后面是起始码为 0x000001的一个NALUint
H.264 NALUint 解析--实例

这个NALUint比较长,它的nal_unit_type == 6。是一个SEI (补充增强信息单元)。

再后面又发现一个起始码
H.264 NALUint 解析--实例

从NALU Header的内容 0x65我们可以知道,这个NALU的
nal_ref_idc == 3
nal_uint_type == 5 (IDR 帧)

好了,实例分析就分析到这里,起始总结下来就是找起始码。两个起始码之间的内容就是一个完整的NALUint的内容。然后取NALUint第一个字节的内容就是NALUint Header。算出nal_unit_type的值,我们就会知道这个NALUint属于哪种帧,或者是sps,pps 或其他一下非VCL NALU。

相关文章:

  • 2021-04-24
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
  • 2021-08-17
  • 2022-12-23
  • 2022-12-23
  • 2021-08-01
猜你喜欢
  • 2021-05-18
  • 2021-09-06
  • 2022-01-06
  • 2021-07-25
  • 2021-06-24
  • 2022-01-22
相关资源
相似解决方案