H.264 NALUint 解析--实例

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

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

所以我们的第一个NALUint就是

spsNALU

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

NALUHeader

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

ppsNALU

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

再后面是起始码为 0x000001的一个NALUint
SEINALU

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

再后面又发现一个起始码
IDRNALU

从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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值