H.264以及编码调试
一、H.264编码原理
H.264相比于之前讲过的MPEG-2来说,注重实用,采用更成熟的技术,要求更高的编码效率和简洁的表现形式。与此同时,在混合编码器的基本框架下,H.264对MPEG-2中的主要关键模块都进行了重大改进。但是,H.264标准的预测、变换、量化、熵编码等基本模块和MPEG-2并没有太大的区别,变化主要体现在功能模块的具体细节上。
1. H.264的特点
- 压缩比高:在同等图像质量的条件下,采用H.264技术压缩后的码流,数据量只有MPEG-2的1/2;
- 容错率高:H.264码流具有较强的抗误码特性,可适应丢包率高、干扰严重的信道,如IP和无线网络;
- 网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输;
- 计算复杂度高:H.264使用较高的计算复杂度,换取优越的性能,其复杂度相当于MPEG-2的2—3倍。
2. H.264和其他MPEG-2编码标准的差异:
- 帧内预测
在空间域内进行帧内预测,提高帧内编码的精确度。 - 运动估计和运动补偿
不同尺寸的块和形状,高分辨率的子像素运动估计,选择多个参考帧 - DCT变换
使用整数的DCT变换 - 去块效应滤波
为消除块效应,增加了自适应消块滤波器 - 熵编码技术
通用变长编码(UVLC),基于上下文的自适应变长码编码(CAVLC),基于上下文的自适应二进制算术编码(CABAC)
二、H.264解码器
修改decoder.cfg文件中的输入文件和输出文件:
InputFile = "foreman_part_qcif.264" # H.264/AVC coded bitstream
OutputFile = "foreman_part_qcif.yuv" # Output file, YUV/RGB
可将.264文件解码为.yuv文件:
三、H.264编码
在进行实验前,我们先搞清一些参数:
- InputFile
/
OutputFile/
ReconFile:输入文件/输出文件(.264)/重建文件(.yuv)