1.1 一个图像或者一个视频序列进行压缩,产生码流。
对图像的处理即是:帧内预测编码
对视频序列的处理:帧间预测编码
1.2 场 、帧、图像
场:隔行扫描的图像,偶数行成为顶场行。奇数行成为底场行。
所有顶场行称为顶场。所有底场行称为底场.
帧:逐行扫描的图像
图像:场和帧都可认为是图像.
1.3 宏块、片
宏块(MB):一个宏块由一个16×16亮度块、一个8×8Cb和一个8×8Cr组成
片(slice):一个图像可以划分成一个或多个片,一个片由一个或多个宏块组成。
2.1 H.264码流结构
H.264从框架结构上将NAL与VCL分离,主要有两个目的:
其一,可以定义VCL视频压缩处理与NAL网络传输机制的接口,这样允许视频编码层VCL的设计可以在不同的处理器平台进行移植,而与NAL层的数据封装格式无关;
其二,VCL和NAL都被设计成工作于不同的传输环境,异构的网络环境并不需要对VCL比特流进行重构和重编码。
H264的编码格式
h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL)。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01"。
VCL功能是进行视频编解码,包括运动补偿预测,变换编码和熵编码等功能;
NAL用于采用适当的格式对VCL视频数据进行封装打包
1)VCL数据即被压缩编码后的视频数据序列。
在VCL数据要封装到NAL单元中之后,才可以用来传输或存储。
2)NAL单元格式
NAL单元由1字节的头,3个定长的字段和一个字节数不定的编码段组成。
头标的语法:NALU类型(5bit)、重要性指示位(2bit)、禁止位(1bit)。
NALU类型:1~12由H.264使用,24~31由H.264以外的应用使用。
重要性指示:标志该NAL单元用于重建时的重要性,值越大,越重要。
禁止位:网络发现NAL单元有比特错误时可设置该比特为1,以便接收方丢掉该单元
Nal头
Rbsp
Nal头
Rbsp
Nal头
Rbsp
(1)NAL Units:视频数据封装在整数字节的NALU中,它的第一个字节标志该单元中数据的类型。H.264定义了两种封装格式。基于包交换的网络(如H.323系统)可以使用RTP封装格式封装NALU。而另外一些系统可能要求将NALU作为顺序比特流传送,为此H.264定义了一种比特流格式的传输机制,使用start_code_prefix将NALU封装起来,从而确定NAL边界。
(2)参数集:以往视频编解码标准中GOB\GOP\图像等头信息是至关重要的,包含这些信息的包的丢失常导致与这些信息相关的图像不能解码。为此H.264将这些很少变化并且对大量VCL NALU起作用的信息放在参数集中传送。参数集分为两种,即序列参数集和图像参数集。为适应多种网络环境,参数集可以带内传送,也可以采用带外方式传送。
序列的参数集(SPS):包括了一个图像序列的所有信息,
图像的参数集(PPS):包括了一个图像所有片的信息。
NAL单元序列
NAL头 RBSP NAL头 RBSP NAL头 RBSP
其中RBPS又分为几种类型:
SPS SEI PPS I片 图像定界符 P片 P片