分层结构:
在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层(VCL)和网络提取层(NAL)。前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此平时的每帧数据就是一个NAL单元(SPS与PPS除外)。VCL数据即被压缩编码后的视频数据序列。在VCL数据要封装到NAL单元中之后,才可以用来传输或存储。
NALU (Network AbstractionLayer Unit )
●SPS:序列参数集,作用于一系列连续的编码图像;
●PSS:图像参数集,作用于编码视频序列中一个或多个独立的图像;
●I帧:帧内编码帧,是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码,视频序列中的第一个帧始终都是I帧。
●P帧:前向预测编码帧,P帧由在它前面的P帧或者I帧预测而来
●B帧:双向预测内插编码帧,B帧是以前面的I或P帧和后面的P帧为参考帧。
H.264编码器输出的码流实际上是一连串二进制比特流,这些语法是被组织成一个有层次的结构。编码视频流由一系列的图像组(GOP)顺序排列而成,一个GOP的第一帧一定是I帧,也是IDR(及时解码刷新)图像,他的编码不涉及其他帧数据。但I图像不一定是IDR图像,在GOP其他地方有可能也有I图像。
GOP中的每一帧又可以分为若干slice,再以slice为单位进行编码。每个slice是由若干宏块(Macro Block,MB)组成,其尺寸为16*16,是H.264编码的基本单位。而MB是由4个8*8亮度块和2个8*8色差块组成。
H.264的5层码流结构由上到下分别是GOP,帧,slice,MB,B。结构如下(图片源于网络)