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码流结构