逐字节详解H.264 AVCC header

AVCC header sequence header or extradata

按位读取流程:  

8  version(版本是1,也是就0x01 )

8  avc profile(值来自 sps[0][1] )

8  avc compatibility(值来自 sps[0][2] )

8  avc level(值来自 sps[0][3] )

6  reserved(保留位,且所有位置1 )

2  NALULengthSizeMinusOne ( 每个表示NALU数据长度所占的Byte -1。如果结果为0,则表示头为1个Byte)

3  reserved ( all bits on )

5  number of SPS NALUs (usually 1)

repeated once per SPS:

  16    SPS size

  variable  SPS NALU data

8  number of PPS NALUs (usually 1)

repeated once per PPS

  16    PPS size

  variable PPS NALU data

原始数据:


逐字节解析:

01: version

64: avc profile

00: avc compatibility

0A: avc level

FF: reserved + NALULengthSizeMinusOne, NALULengthSizeMinusOne= (0xFF&0x3)+1 = 0x3 + 1 = 4,表示每个NALU需要4 bytes

E1: reserved(3 bits)+ number of SPS NALUs(5 bits),当前头SPS个数=0xE1&0x1F = 0x1 = 1,说明后续只有1个SPS

00 19: 0x0019,当前SPS的长度为25 bytes

67 64 00 0A AC 72 84 44 26 84 00 00 03 00 04 00 00 03 00 CA 3C 48 96 11 80 (SPS到此结束)

01: 含有一个 PPS

00 07:PPS的长度为7 bytes

68 E8 43 8F 13 21 30 (PPS到此结束)

00 00 02 41 :根据前面计算得到的NALULengthSizeMinusOne可以知道需要读取的数据长度为4 bytes, 0x0241=577 bytes

65 88 81 00 05 4E 7F 87 DF 61 A5 8B ...:577 bytes数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先我们获得h264的流,在监听里,我们通过参数可以获得RTMP包 IStreamPacket,调用getData...
    userName阅读 3,584评论 0 52
  • 一. 概述 苹果从iOS 8开始,开放了硬编码和硬解码的api,所以,从iOS 8开始,需要解码H.264视频时,...
    金山视频云阅读 10,228评论 1 25
  • 在如何看待哔哩哔哩的开源 HTML5 播放器内核 flv.js?中,flv.js作者有这样一段回复:一些人问我为什...
    合肥黑阅读 2,470评论 1 4
  • 本文需要读者对H.264流有一定的了解才可以理解2种格式差异。 首先要理解的是没有标准的H.264基本流格式。文档...
    cjy027阅读 3,274评论 0 4
  • 随想9.29 生活是散落在各处的玻璃珠子,总有很多光彩夺目,却又稍纵即逝。仿佛那最美的从未存在过。 哪怕是回味一天...
    宇践未来阅读 284评论 0 0