RTP --- H.264 NALU 介绍

NALU

H264 原始码流是由一个接一个 NALU(NAL Unit) 组成,每个NALU之间都使用start code(起始码)分隔,NALU单元通常由[StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是00 00 00 01 或00 00 01。每个 NALU包括一个头部信息(NAL header,一字节)和一个原始字节序列负荷(RBSP,Raw Byte Sequence Payload)。

NAL header

 

forbidden_zero_bit (F,占1bit)
在 H.264 规范中规定了这⼀位必须为 0 。

nal_ref_idc (NRI,占2bit)
NAL重要性,值越大,越重要,解码器在解码处理不过来的时候,可以丢掉重要性为0的NALU,而不影响图像的回放 。 如果当前NALU是属于参考帧的片,或是序列参数集,或是图像参数集这些重要的单位时,本句法元素必需大于0。

nal_unit_type(Type,占5bit):

这个NALU单元的类型,1~12由H.264使用,24~31由H.264以外的应用使用。

常见的NALU类型

NAL header 类型 重要性 nal_unit_type
0x67 (0 11 00111) SPS 非常重要 type = 7
0x68 (0 11 01000) PPS 非常重要 type = 8
0x65 (0 11 00101) IDR帧 关键帧 非常重要 type = 5
0x61 (0 11 00001) I帧 非常重要 type=1非IDR的I帧不大常见
0x41 (0 10 00001) P帧 重要 type = 1
0x01 (0 00 00001) B帧 不重要 type = 1
0x06 (0 00 00110) SEI 不重要 type = 6

 

帧类型

I帧:完整编码的帧叫I帧,是一个图像经过压缩后的产物,自身可以通过视频解压算法解压成一张单独的完整的图片

IDF帧:序列的首个帧,IDF帧属于I帧。发送IDR帧前会先发送 SPS NALU、PPS NALU

P帧:参考之前的I帧生成的只包含差异部分编码的帧叫P帧, 需要参考其前面的一个I 帧或者P 帧来生成一张完整的图片 ;

B帧:参考前后的帧编码的帧叫B帧 , 要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片 。

 

posted @ 2024-11-15 16:47  流水灯  阅读(3)  评论(0编辑  收藏  举报