码迷,mamicode.com
首页 > 其他好文 > 详细

分析IPNC_RDK H264编码器输出原始码流信息

时间:2015-05-29 15:52:07      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ipnc   h264raw   解析   

最近在研究FLV视频格式,发现要想把H264码流解出来,就需要AVCDecoderConfigurationRecord 的信息,具体AVCDecoderConfigurationRecord  如何解析,可以参考:h264中avc和flv数据的解析

为了保证播放器可以正常解析数据出来,我们在打包数据格式无论是FLV还是MP4都必须提供AVCDecoderConfigurationRecord (里面包含里SPS序列参数集、PPS图片参数集,profie_idc,level_idc等信息),详细自己可以参考:ISO 14496-15 5.2.4.1.1.

     下面我们通过WinHex打开H264编码器直接输出的码流数据VBITS_HDR_0.bin,如下图:

技术分享

帧数据是将多个 NALU 使用 00 00 01或者00 00 00 01 连接的字节数组,看上面的数据时以00 00 00 01将一个一个NALU单元连接起来输出,

看上图,可以得到,注意看灰色的部分,NALU单元是以00 00 00 01分割的

这里插入一点NALU的小知识,每个NALU第一个字节的前5位标明的是该NAL包的类型,即NAL nal_unit_type

技术分享
#define NALU_TYPE_SLICE 1
#define NALU_TYPE_DPA 2
#define NALU_TYPE_DPB 3
#define NALU_TYPE_DPC 4
#define NALU_TYPE_IDR 5
#define NALU_TYPE_SEI 6
#define NALU_TYPE_SPS 7
#define NALU_TYPE_PPS 8
#define NALU_TYPE_AUD 9  //访问分隔符
#define NALU_TYPE_EOSEQ 10
#define NALU_TYPE_EOSTREAM 11
#define NALU_TYPE_FILL 12

第一个NALU单元是sps,因为第一个字节 0x27&0x1f = 7 

技术分享

第二个PPS,因为0x28 & 0x1f = 8

技术分享

第三个是SEI,因为 0x6 & 0x1f = 6

技术分享

第四个是IDR,即关键帧,因为 0x25 & 0x1f = 5

技术分享

技术分享
一次类推,可以将后面的所以NALU单元全部解析出来。

H264参数语法文档: SPS、PPS、IDR http://blog.csdn.net/heanyu/article/details/6205390

也可以参考毕厚杰的书。


分析IPNC_RDK H264编码器输出原始码流信息

标签:ipnc   h264raw   解析   

原文地址:http://blog.csdn.net/jody1989/article/details/46226503

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!