概述
H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。
H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想参考解码)、Hypothetical Stream Scheduler(HSS,假想码流调度器)。
特点
- 压缩比高:在同等图像质量的条件下,采用H.264技术压缩后的码流,数据量只有MPEG-2的1/2;
- 容错率高:H.264码流具有较强的抗误码特性,可适应丢包率高、干扰严重的信道,如IP和无线网络;
- 网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输;
- 计算复杂度高:H.264使用较高的计算复杂度,换取优越的性能,其复杂度相当于MPEG-2的2—3倍。
差异
- 帧内预测:在空间域内进行帧内预测,提高帧内编码的精确度。不可以用下方或右方的像素来预测,原因是需要保证编解码端的一致性,解码端只能用解码以后的样本,不能用下方或右侧还未编码的像素。
- 基于运动估计和运动补偿的帧间预测:去除时间冗余,不同尺寸的块和形状,高分辨率的子像素运动估计,选择多个参考帧。
- DCT变换:去除空间冗余,使用整数的DCT变换,利用相关性。
- 熵编码技术:去除统计冗余,通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)。
码流分析
sps
即Sequence Paramater Set
,又称为序列参数集。SPS中保存了一组编码视频序列的全局参数。通过码流分析软件打开.264
文件后可以查看到该文件的SPS
信息如下:
数据块 | 对应解释 | 测试文件数据 |
profile_idc | 标识当前H.264码流的profile。 H.264中定义了三种常用的档次profile: profile_idc = 66 → baseline profile; profile_idc = 77 → main profile; profile_idc = 88 → extended profile; |
查阅官方手册可知: profile_idc =100时,视频的格式是高级 |
level_idc | 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。 | 31,也就是level=31 |
seq_parameter_set_id | 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。seq_parameter_set_id 的值应在 0-31 的范围内,包括 0 和 31。 | 0 |