一.实验目标:
二.实验原理:
预备知识:
(1) 视频编码帧
I帧(Intra Frame,帧内编码帧):只使用本帧内的数据进行编码(DCT、量化、熵编码),压缩比较低,约为(2—5):1。此外还有IDR帧(Instantaneous Decoding Refresh Frame),是GOP的第一个I帧(一种特殊的I帧)。IDR帧之后的所有帧都不能参考IDR帧之前帧的内容(而位于普通的I帧之后的P/B帧可以参考其之前的I帧),也就是说,从IDR帧开始,重新算一个新的序列开始编码,因而播放器永远可以从一个IDR帧开始播放,因为在其之后没有对于任何其之前帧的参考。
P帧(Predictive Frame,前向预测编码帧):以前面最靠近的I帧或P帧作为参考进行前向预测编码。
B帧(Bidirectional Predictive Frame,双向预测编码帧):以一个前面的参考帧和一个后面的参考帧进行双向预测编码。
(2) GOP
GOP(Group of Pictures,图像组)是将一个图像序列中连续的几个图像组成的一个小组,是对编码后的视频码流进行编辑、存取和压缩编码的基本单元,包含不同种类编码的帧
GOP大小不固定,但GOP一定以I帧开始,但每个GOP可能包含多个I帧。
增大GOP或提高GOP中P/B帧的占比,可以提高压缩比,降低码率。因此一般而言,在码率一定的条件下,GOP越大,图像质量越好(P/B帧的比重更大);在图像质量一定的条件下,GOP越大,码率越低。
闭合GOP(Closed GOP)与开放GOP(Open GOP):在H.264的GOP中,所有的GOP都是独立解码的,与其他GOP无关,即它们都是“闭合”的。但是在HEVC中,GOP的结构发生了变化,采用了“开放”的结构,在解码过程过可能会参考其他GOP的数据。
(3) 帧重排
由于B帧是双向预测帧,因此在后向预测时,需要以其后面的P或I帧作为参考,因此需要将原始图像顺序重新排序后送入编码器2。
1.H.264的优点:
(1)压缩比高:在同等图像质量的条件下,采用H.264技术压缩后的码流,数据量只有MPEG-2的1/2;
(2)容错率高:H.264码流具有较强的抗误码特性,可适应丢包率高、干扰严重的信道,如IP和无线网络;
(3)网络适应性强:H.264提供了网络适应层,使得H.264的文件能容易地在不同网络上传输;
(4)计算复杂度高:H.264使用较高的计算复杂度,换取优越的性能,其复杂度相当于MPEG-2的2—3倍。
2.编码框图
3.解码框图:
框图中体现出来的三种技术:
(1)变换:去除空间冗余
(2)基于运动补偿的帧间预测:去除时间冗余
(3)熵编码:去除统计冗余
4.H.264采用的技术
(1)分层设计
H.264在视频编码层(VCL)和网络提取层(NAL)之间进行概念分割,以实现在不同的传输环境下的有效传输,便于与当前和将来的编码格式和不同类型的网络进行无缝连接。
(2) 帧内预测编码
根据邻近块的值来预测当前宏块的值,再对预测值和原始值的差值进行变换、量化和编码。对于亮度块,使用4×4与16×16编码模式,对色度块采用8×8编码模式。
以亮度块的4×4帧内预测模式为例,由周围的15个像素预测4×4的16个像素,共有9种预测模式,分别计算各自的SAE,以最小者作为该块的预测模式。(SAE??9种预测模式??)
(3) 帧间预测编码——基于块的运动补偿
树状结构运动补偿:使用不同大小和形状的块进行运动补偿(低频区域使用大块,高频区域使用小块);
使用1/4像素精度运动矢量
在多个参考帧中进行运动搜索,选择一个与编码帧最相似的帧作为参考帧
引入SI帧和SP帧:适应码流带宽自适应和抗误码的要求,改善网络亲和性,支持流媒体服务
(4) 整数变换
使用整数DCT代替MPEG-2中的DCT,保证变换中无精度损失,且标准中对正反变换有详细说明,不会出现误匹配。另外,整数变换仅需要移位和加法,最大程度提高运算效率。
(5) 量化处理
H.264标准支持52个量化步长,量化参数QP每增加6,量化步长Qstep增加一倍。量化步长取值范围很广,这就为编码中兼顾比特率和编码质量提供了足够多的灵活度和准确度。
(6) 去块效应滤波
为消除块效应,H.264编码系统的预测环路中增加了自适应去块效应滤波器。
(7) 熵编码
H.264标准中给出了两种熵编码方法:CAVLC(Context-based Adaptive Variable Length Coding,基于上下文的自适应可变长编码)和CABAC(Context-based Adaptive Binary Arithmetic Coding,基于上下文的自适应二进制算术编码),其中前者为基本编码方法,后者可选编码方法,且后者的编码性能相较于前者较好,但计算复杂度更高。
三.实验过程:
(1)解码器调试:
设置调试参数
解码264文件得到4:2:0采样的yuv文件:
(2)编码器调试:
编码器代码参数的含义:
优先级: 有关IntraPeriod、IDRPeriod、NumberBFrames、PrimaryGOPLength之间的优先级关系:
IDRPeriod决定了GOP的长度,而IntraPeriod只决定了GOP内两个I帧之间的距离,因而后者小于前者(若后者大于等于前者,则均相当于IntraPeriod
= 0)。故优先级:IDRPeriod > IntraPeriod; NumberBFrames决定了两个I/P帧之间的B帧数量,但只有在NumberBFrames≤
IntraPeriod时才有效,即优先级:IntraPeriod > NumberBFrames;
PrimaryGOPLength一般设置为与IDRPeriod相同;即便不相同,也不对码流产生影响。故优先级:IDRPeriod >
PrimaryGOPLength 以上结论可以通过与下面的例子结合理解(NumberBFrames均设为2):
(1)固定码率(5Mbps),不同的GOP长度及形状:
参数设置:
运行结果:
(2)固定GOP长度及形状,不同码率:
参数设置仿照上方
本实验采用GOP=15、2B帧
运行结果:
结论:在gop结构和形状相同时,比特率升高,编码后的图像质量也上升。(PSNR高)
四.参考
https://blog.csdn.net/szzheng/article/details/108018422?spm=1001.2014.3001.5501