H.264 码流结构解析 (整理)
2013-12-26 20:52
120 查看
1. H.264简介
MPEG(Moving Picture Experts Group)和VCEG(Video Coding
Experts Group)已经联合开发了一个比早期研发的MPEG和H.263
性能更好的视频压缩编码标准,这就是被命名为***C(Advanced Video Coding),也被称为ITU-T H.264
建议和MPEG-4 的第10部分的标准,简称为H.264/***C
或H.264。这个国际标准已经与2003年3
月正式被ITU-T所通过并在国际上正式颁布。为适应高清视频压缩的需求,2004
年又增加了FRExt 部分;为适应不同码率及质量的需求,2006年又增加了可伸缩编码 SVC。
2. H.264编码格式
H.263 定义的码流结构是分级结构,共四层。自上而下分别为:图像层(picturelayer)、块组层(GOB layer)、宏块层(macroblock
layer)和块层(block layer)。而与H.263相比,H.264
的码流结构和H.263的有很大的区别,它采用的不再是严格的分级结构。
H.264 支持4:2:0的连续或隔行视频的编码和解码。H.264
压缩与H.263、MPEG-4相比,视频压缩比提高了一倍。
H.264 的功能分为两层:视频编码层(VCL, Video CodingLayer)和网络提取层(NAL, Network Abstraction Layer)。VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输或存储之前,这些编码的VCL
数据,先被映射或封装进NAL单元中。每个NAL
单元包括一个原始字节序列负荷(RBSP, Raw Byte Sequence Payload)、一组对应于视频编码的NAL头信息。RBSP的基本结构是:在原始编码数据的后面填加了结尾比特。一个bit“1”若干比特“0”,以便字节对齐。
3. H.264传输
H.264 的编码视频序列包括一系列的NAL单元,每个NAL
单元包含一个RBSP,见表1。编码片(包括数据分割片IDR片)和序列RBSP
结束符被定义为VCL NAL单元,其余为NAL
单元。典型的RBSP单元序列如图2
所示。每个单元都按独立的NAL单元传送。单元的信息头(一个字节)定义了RBSP
单元的类型,NAL 单元的其余部分为RBSP数据。
4.H264码流结构层次
起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。
NAL Header:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。
脱壳操作:为了使NALU主体不包括起始码,在编码时每遇到两个字节(连续)的0,就插入一字节0x03,以和起始码相区别。解码时,则将相应的0x03删除掉。
sub_mb_pred 和mb_pred:运动补偿或者是帧内预测。
5. H.264解码
NAL 头信息的nal_referrence_idc(NRI)用于在重建过程中标记一个NAL单元的重要性,值为0
表示这个NAL单元没有用预测,因此可以被解码器抛弃而不会有错误扩散;值高于0
表示NAL 单元要用于无漂移重构,且值越高,对此NAL单元丢失的影响越大。
NAL 头信息的隐藏比特位,在H.264编码器中默认为0,当网络识别到单元中存在比特错误时,可将其置为1。隐藏比特位主要用于适应不同种类的网络环境(比如有线无线相结合的环境)。
NAL 单元解码的流程为:首先从NAL单元中提取出RBSP
语法结构,然后按照如图4所示的流程处理RBSP
语法结构。输入的是NAL单元,输出结果是经过解码的当前图像的样值点。
NAL 单元中分别包含了序列参数集和图像参数集。图像参数集和序列参数集在其他NAL单元传输过程中作为参考使用,在这些数据NAL
单元的片头中,通过语法元素pic_parameter_set_id设置它们所使用的图像参数集编号;而相应的每个图像参数集中,通过语法元素seq_paramter_set_id设置他们使用的序列参数集编号。
6.各分层结构的语法元素参考G50
标准。
MPEG(Moving Picture Experts Group)和VCEG(Video Coding
Experts Group)已经联合开发了一个比早期研发的MPEG和H.263
性能更好的视频压缩编码标准,这就是被命名为***C(Advanced Video Coding),也被称为ITU-T H.264
建议和MPEG-4 的第10部分的标准,简称为H.264/***C
或H.264。这个国际标准已经与2003年3
月正式被ITU-T所通过并在国际上正式颁布。为适应高清视频压缩的需求,2004
年又增加了FRExt 部分;为适应不同码率及质量的需求,2006年又增加了可伸缩编码 SVC。
2. H.264编码格式
H.263 定义的码流结构是分级结构,共四层。自上而下分别为:图像层(picturelayer)、块组层(GOB layer)、宏块层(macroblock
layer)和块层(block layer)。而与H.263相比,H.264
的码流结构和H.263的有很大的区别,它采用的不再是严格的分级结构。
H.264 支持4:2:0的连续或隔行视频的编码和解码。H.264
压缩与H.263、MPEG-4相比,视频压缩比提高了一倍。
H.264 的功能分为两层:视频编码层(VCL, Video CodingLayer)和网络提取层(NAL, Network Abstraction Layer)。VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输或存储之前,这些编码的VCL
数据,先被映射或封装进NAL单元中。每个NAL
单元包括一个原始字节序列负荷(RBSP, Raw Byte Sequence Payload)、一组对应于视频编码的NAL头信息。RBSP的基本结构是:在原始编码数据的后面填加了结尾比特。一个bit“1”若干比特“0”,以便字节对齐。
3. H.264传输
H.264 的编码视频序列包括一系列的NAL单元,每个NAL
单元包含一个RBSP,见表1。编码片(包括数据分割片IDR片)和序列RBSP
结束符被定义为VCL NAL单元,其余为NAL
单元。典型的RBSP单元序列如图2
所示。每个单元都按独立的NAL单元传送。单元的信息头(一个字节)定义了RBSP
单元的类型,NAL 单元的其余部分为RBSP数据。
RBSP类型 | 描述 |
参数集PS | 序列的全局,如图像尺寸、视频格式等 |
增强信息SEI | 视频序列解码的增强信息 |
图像界定PD | 视频图像的边界 |
编码片 | 片的头信息和数据 |
数据分割 | DP片层的数据,用于错误恢复解码 |
序列结束符 | 表明下一图像为IDR图像 |
流结束符 | 表明该流中已没有图像 |
填充数据 | 哑元数据,用于填充字节 |
起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。
NAL Header:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。
脱壳操作:为了使NALU主体不包括起始码,在编码时每遇到两个字节(连续)的0,就插入一字节0x03,以和起始码相区别。解码时,则将相应的0x03删除掉。
Nal_unit_type | NAL 类型 | C |
0 | 未使用 | |
1 | 不分区、非IDR图像的片 | 2,3,4 |
2 | 片分区A | 2 |
3 | 片分区B | 3 |
4 | 片分区C | 4 |
5 | IDR 图像中的片 | 2,3 |
6 | 补充增强信息单元(SEI) | 5 |
7 | 序列参数集 | 0 |
8 | 图像参数集 | 1 |
9 | 分界符 | 6 |
10 | 序列结束 | 7 |
11 | 码流结束 | 8 |
12 | 填充 | 9 |
13~23 | 保留 | |
24~31 | 未使用 |
5. H.264解码
NAL 头信息的nal_referrence_idc(NRI)用于在重建过程中标记一个NAL单元的重要性,值为0
表示这个NAL单元没有用预测,因此可以被解码器抛弃而不会有错误扩散;值高于0
表示NAL 单元要用于无漂移重构,且值越高,对此NAL单元丢失的影响越大。
NAL 头信息的隐藏比特位,在H.264编码器中默认为0,当网络识别到单元中存在比特错误时,可将其置为1。隐藏比特位主要用于适应不同种类的网络环境(比如有线无线相结合的环境)。
NAL 单元解码的流程为:首先从NAL单元中提取出RBSP
语法结构,然后按照如图4所示的流程处理RBSP
语法结构。输入的是NAL单元,输出结果是经过解码的当前图像的样值点。
NAL 单元中分别包含了序列参数集和图像参数集。图像参数集和序列参数集在其他NAL单元传输过程中作为参考使用,在这些数据NAL
单元的片头中,通过语法元素pic_parameter_set_id设置它们所使用的图像参数集编号;而相应的每个图像参数集中,通过语法元素seq_paramter_set_id设置他们使用的序列参数集编号。
6.各分层结构的语法元素参考G50
标准。
相关文章推荐
- H.264码流结构解析
- H.264码流结构解析
- H.264码流结构解析
- H.264码流结构解析
- 【H.264/AVC视频编解码技术详解】十二、解析H.264码流的宏块结构(下):H.264帧内编码宏块的预测结构
- H.264码流结构解析
- 十二、解析H.264码流的宏块结构(上)
- 【H.264/AVC视频编解码技术详解】十二、解析H.264码流的宏块结构(上)
- H.264码流结构解析1
- H.264码流解析 一个SPS的nalu及获取视频的分辨率
- H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
- H.264码流结构及码流封装成RTP包分析
- H.264视频码流解析
- H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
- H.264的NAL单元及码流结构
- H.264码流结构
- H.264码流结构示意图
- H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
- H.264码流结构
- 视音频数据处理入门:H.264视频码流解析