H264介绍
H264,同时也是MPEG-4的第十部分,是由ITU-T视频编码专家组和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组提出的高度压缩数据视频编码器标准(引用自被堵百科)。
H264编码格式
H264支持4:2:0的连续和隔行视频的编码和解码。它主要分为两层:视频编码层(VCL,Video Coding Layer)和网络提取层(NAL,NetWork Abstraction Layer)。VCL数据就是编码后的数据,表示的是编码后的视频序列。在数据传输或者存储之前,会将VCL数据封装在NAL单元中。
NAL单元包括一个NAL头和RBSP,NAL单元序列的示意图如下:
NAL头 |
RBSP |
NAL头 |
RBSP |
… |
NAL头 |
RBSP |
NAL头包括起始序列和NAL类型,起始序列为0x00000001或者0x000001,NAL头结构包括forbidden_bit(1bit)+ nal_reference_bit(2bit) + nal_unit_type(5bit)。
1.forbidden_bit: 禁止位,初始为0,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元。
2.nal_reference_bit: nal重要性指示,标志该NAL单元的重要性,值越大,越重要,解码器在解码处理不过来的时候,可以丢掉重要性为0的NALU。
不同类型的NALU的重要性指示如下表所示。
nal_unit_type |
NAL类型 |
nal_reference_bit |
0 |
未使用 |
0 |
1 |
非IDR的片 |
此片属于参考帧,则不等于0, 不属于参考帧,则等与0 |
2 |
片数据A分区 |
同上 |
3 |
片数据B分区 |
同上 |
4 |
片数据C分区 |
同上 |
5 |
IDR图像的片 |
5 |
6 |
补充增强信息单元(SEI) |
0 |
7 |
序列参数集 |
非0 |
8 |
图像参数集 |
非0 |
9 |
分界符 |
0 |
10 |
序列结束 |
0 |
11 |
码流结束 |
0 |
12 |
填充 |
0 |
13..23 |
保留 |
0 |
24..31 |
不保留 |
0 |
H264码流结构