2 . 解析 AVC 序列头数据 :
① 帧类型数据 :
[
0
]
[0]
[0] 视频数据描述 , 值为 17 ;
-
高
4
4
4 位值为 1 , 表示这是关键帧 ;
-
低
4
4
4 位值为 7 , 表示 AVC 视频编码 ;
后面的数据表示 AVC 视频数据包 ( AVCVEDIOPACKET ) , 继续分析后面的数据 ;
② AVC 数据类型 :
[
1
]
[1]
[1] 表示类型 , 值为 00 , 表示后续数据是 AVC 序列头 ;
③ 合成时间 :
[
2
,
4
]
[2,4]
[2,4] 表示合成时间 , 00 00 00 , 表示时间 , 一般都是 00 ;
④ AVC 数据位 :
[
5
,
n
]
[5, n]
[5,n] 数据位 , 数据的内容需要根据
[
1
]
[1]
[1] 的类型来封装 , 数据位中的数据是 AVC 序列头数据 ;
3 . 关于 AVC 数据位说明 :
① 序列头数据 : 如果
[
1
]
[1]
[1] 的值是 00 表示该数据类型是 AVC 序列头数据 , 那么该数据位的值是 AVC 序列头数据 ;
② 帧数据 : 如果
[
1
]
[1]
[1] 的值是 01 , 那么表示该数据的类型是 I帧 / B 帧 / P 帧 等其它单元数据 , 数据位就是对应的帧数据 ;
三、 AVC 序列头格式解析
1 . 视频标签中的数据位由两部分组成 , 帧类型 和 AVC 视频数据包 , 蓝色部分是标签头 , 绿色部分是帧类型数据 , 紫色部分是 AVC 数据类型 , 橙色部分是合成时间 , 红色部分是 AVC 序列头数据 ;
0x00000182 : 09 00 00 2E 00 00 00 00
0x0000018a : 00 00 00 17 00 00 00 00
0x00000192 : 01 64 00 32 FF E1 00 19
0x0000019a : 67 64 00 32 AC D9 80 78
0x000001a2 : 02 27 E5 84 00 00 03 00
0x000001aa : 04 00 00 1F 40 3C 60 C6
0x000001b2 : 68 01 00 05 68 E9 7B 2C
0x000001ba : 8B 00 00 00 39
2 . 下面解析 AVC 序列头格式 :
0x00000192 : 01 64 00 32 FF E1 00 19
0x0000019a : 67 64 00 32 AC D9 80 78
0x000001a2 : 02 27 E5 84 00 00 03 00
0x000001aa : 04 00 00 1F 40 3C 60 C6
0x000001b2 : 68 01 00 05 68 E9 7B 2C
0x000001ba : 8B 00 00 00 39
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
3 . AVC 序列头数据解析 : 下面的值都是 十六进制 , 省略 0x ;
① 版本信息 :
1
1
1 字节 , 索引区间
[
0
]
[0]
[0] ; 值为 01 ;
② 编码规格 :
3
3
3 字节 , 索引区间
[
1
,
3
]
[1,3]
[1,3] , 数据来自 sps[1] , sps[2] , sps[3] 这三个字节的数据 , SPS 与 PPS 是指导播放器解码的数据 , 知道这两个数据 , 播放器就可以知道后续如何解码 ; 这里的值是 64 00 32 ;
③ NALU 长度 :
1
1
1 字节 , 索引区间
[
4
]
[4]
[4] , 一般是 FF , 需要经过计算才能获得包长度 ;
④ SPS 个数 :
1
1
1 字节 , 索引区间
[
5
]
[5]
[5] , 其取值 E1 , 个数需要经过计算 , 0xE1 & 0x1F = 1 , 个数为 1 ;
⑤ SPS 长度 :
2
2
2 字节 , 索引区间
[
6
,
7
]
[6,7]
[6,7] , 取值 00 19 , 对应十进制的 25 个字节 ;
⑥ SPS 数据 : 下面的 25 个字节就是 SPS 数据 ;
67 64 00 32 AC D9 80 78
0x000001a2 : 02 27 E5 84 00 00 03 00
0x000001aa : 04 00 00 1F 40 3C 60 C6
0x000001b2 : 68
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
⑦ PPS 个数 :
1
1
1 字节 , 这里是 01 ;
⑧ PPS 长度 :
2
2
2 字节 , 这里是 00 05 ;
⑨ PPS 数据 : 下面是对应的 5 个 PPS 数据 ;
68 E9 7B 2C
0x000001ba : 8B
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
⑩ 整个标签长度 : 00 00 00 39 表示整个标签的长度 , 十进制为 57 ;
data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://hanshuliang.blog.csdn.net/article/details/106662537","extend1":"pc","ab":"new"}">>
评论记录:
回复评论: