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(Sequence parameter set) 非常重要 type = 7
0x68 (0 11 01000) PPS(Picture parameter set) 非常重要 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

 

帧类型

GOP Group of picture The sum of one I-frame and number of pictures between two I frames

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

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

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

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

 

posted @   流水灯  阅读(143)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
历史上的今天:
2017-11-15 Qt ------ 断开某对信号与槽的connect
2017-11-15 5种网络通信设计模型(也称IO模型)
点击右上角即可分享
微信分享提示