h264编解码

1、h264组成

在实际的H264数据帧中,编码器编出的首帧数据为PPS与SPS,仅接着为I帧+ p(b)帧,每帧数据就是一个NAL单元(SPS与PPS除外),帧前面带有00 00 00 01 或 00 00 01分隔符

SPS:序列参数集(00 00 00 01 67)

PPS:图像参数集(00 00 00 01 68)

IDR图像中的片(I帧)(00 00 00 01 65)

 

2、如何判断帧类型(是图像参考帧还是I、P帧、sps、pps等)?

根据00 00 00 01之后的下一个字节(表示NALU类型)判断

 type:NALU类型  & 31 (0001  1111),比如:0x65 & 31 = 5

7对应序列参数集SPS

8对应序列参数集PPS

5对应IDR图像中的片(I帧)

3、文档标准

 NALU类型是我们判断帧类型的依据,官方文档中得出如下图:


以00 00 00 01分割之后的下一个字节就是NALU类型,将其转为二进制数据后,解读顺序为从左往右算,如下:
(1)第1位禁止位,值为1表示语法出错
(2)第2~3位为参考级别
(3)第4~8为是nal单元类型

例如上面00000001后有67,68以及65

其中0x67的二进制码为:
0110 0111
4-8为00111,转为十进制7,参考第上图:7对应序列参数集SPS

其中0x68的二进制码为:
0110 1000
4-8为01000,转为十进制8,参考上图:8对应图像参数集PPS

其中0x65的二进制码为:
0110 0101
4-8为00101,转为十进制5,参考上图:5对应IDR图像中的片(I帧)

 


版权声明:本文为fengzhihun7原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。