x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是符合标准H.264最好的有损视频编码器。目前新一代视频编码标准H.265也已发布多时,对应的X265也已比较成熟,但是x264目前仍然在市场上占有主要地位,使用居多,应该和其复杂度较低,便于硬件实现由一定关系。
x264是符合H.264标准协议的,其编码环节分为预测,变换,量化,熵编码以及重建五大部分。H264的编码框架图如下所示:
输入的待编码帧以宏块为单位进行编码,首先进行预测处理,包括这内预测和帧间预测,接着将预测值和当前块的原始值相减,相减后得到的残差块经变换量化后得到一组量化后的变换系数,最后这组量化后的系数再经过熵编码,加上一些必要的用于解码的头信息,最终得到一个压缩后的码流,压缩码流通过NAL(网络适应层)供传输和存储用。在预测过程中,需要用到重建图像作为参考,重建过程即是将量化后的系数经过反量化,反变换后与预测值相加得到重建值,同时为了去除编解码过程中产生的噪声,提高参考帧的图像质量,从而提高图像压缩性能,在重建过程中设置了一个滤波器,经过滤波的输出图像作为真正的参考图像,用于预测处理。
由H.264的编码框架可以看出其编码流程比较清晰,可以按照预测、变换、量化、熵编码、重建的顺序进行理解和学习。另外与编码相关的还有网络适配层、率失真优化以及码率控制等也是需要理解和学习。