H.265/HEVC、VP9、H.264编码算法比较及性能测试分析 | WebRTC编风网
0

H.265/HEVC、VP9、H.264编码算法比较及性能测试分析

已有 4,251 人阅读此文 - - - xiaoya

一、引言

随着网络通信技术的发展以及有线和无线终端的大量普及,人们对于网络视频业务的需求日益增长。据统计,目前网络视频数据占据了整个互联网数据的80%以上。在这种形势下,对于终端用户来说,如何能够在较低的带宽下获取更高质量的视频数据成为一个亟需解决的问题。新一代视频编码算法HEVC和VP9的出现为解决这一问题带来了曙光。HEVC和VP9均号称在同等图像质量的情况下,较上一代编码器H.264和VP8有50%码流的节省。因此,本文对于HEVC、VP9及H.264在算法上做了详细研究并对这三种编码器进行了详细的测试。

二、HEVC编码技术介绍

2.1 HEVC标准

HEVC全称是High Efficiency Video Coding,是一种全新的视频编码标准,是H.264的下一代视频编码标准。2010年1月,VCEG和MPEG组织联合发起新一代视频编码技术提案。视频编码联合小组对相关技术进行审议和评估,并于2010年4月召开第一次会议,会议中一共商讨了27个完整的提案。2013年1月,ISO/IEC和ITU-T组织同时发布了HEVC标准的最终版本。2013年1月26号,HEVC正式成为国际标准。HEVC较H.264有40%-50%的码流节省,并且增加了更多的并行机制和网络传输机制。

2.2 HEVC编码技术亮点

1.树型编码结构

HEVC使用了更大的宏块进行编码,这些宏块在HEVC中叫做CTU(编码树单元),大小可以为16×16、32×32和64×64像素。通过四叉树结构将CTU转换为CU(编码单元)进行编码。在预测模式下部分CU将转换为PU(预测单元)。对图像残差转换时CU转换为TU(变换单元),进行DCT转换和量化。

2.帧内预测

帧内预测是用来压缩大量空域冗余数据的数据压缩方式。HEVC的帧内预测一共有33方向的预测方向,覆盖整个180度的范围,并提供了DC和PLANAL两种平面预测方式,共计35种预测方式(如图1所示)。通过多方向的预测可以增加预测的精度,减小图像残差数据的产生,增加数据压缩效率。

3.先进的运动矢量预测技术

在运动补偿中,为了压缩运动矢量的编码信息,采用了运动矢量预测技术。通过运动矢量预测技术可以更加精准预测运动矢量,减小预测误差,从而更好地压缩运动矢量信息。HEVC的运动矢量预测技术采用了更加复杂的时域结合空域的预测方式,预测的候选者更多,从而得到更加精准的结果。

4.高阶滤波处理器

通过使用高阶的插值滤波器,能够更好地对于亚像素精度的位置进行插值滤波处理,从而降低残差数据的产生。HEVC对于1/4像素采用了7阶插值滤波器,1/2像素采用8阶插值滤波器。

5.后期处理

后期处理在使用去块滤波器之外,还使用了SAO(采样点自适应补偿)技术。通过SAO技术,可以更好地恢复图像质量,同时又相对的限制了码流的提升。

6.熵编码方案

HEVC采用了高数据压缩率的熵编码方案CABAC。CABAC是一种上下文自适应的熵编码方案,对于大于0.5概率的数据达到理想的数据压缩率。为了提高CABAC的数据吞吐率,HEVC减少了大量的熵编码模型。

图1 帧内预测的35种方式

1

2.3 HEVC架构介绍

HEVC的整个架构主要分为预处理、编码器控制、帧内预测、帧间预测、DCT转换、量化、反量化和后期处理几个部分。

整个架构的流程(如图2所示)如下:

1.输入图像划分为CTU。

2.第一帧图像作为I帧只能进行帧内预测。帧内预测是建立在重建单元的基础上,所以输入图像会直接进入量化和反量化解码流程,解码后的图像中的部分重建像素用来进行帧内预测。

3.帧内预测完毕后,编码器控制器将开关打到帧内预测的输出口,输出的预测图像同原始图像比较获取残差,同时会将帧内预测的信息传输到CABAC中。

4.获取的残差会通过变换和量化产生压缩信息,这部分信息也将传输到CABAC中。同时为了下一帧的帧间预测,需要将量化后的图像残差反量化回原始的图像残差,然后连同帧内预测的图像叠加形成完整的解码图像,然后进行后期的滤波处理和SAO处理。在此之后,后期处理信息将会传输到CABAC中。

5.第二张输入的原始图像将同解码的图像进行运动估计,得出的运动矢量用来进行运动补偿,此时编码控制器会将开关打到运动补偿的输出口。然后,补偿图像将同原始图像做相减处理获取残差,并转入第四步。此时的运动估计和运动补偿信息将会传输到CABAC进行熵编码。

6. 重复1-5步。对于帧内预测和帧间预测,编码控制器会控制开关的切换。

图2 HEVC架构

1

三、VP9编码技术介绍

3.1 VP9简介

VP9是由谷歌公司开发的开放格式、无使用授权费的视频压缩标准。VP9的目标之一是相同质量下较VP8提高50%的压缩率。而另一个目标就是争取能在压缩效率上超越HEVC。

3.2 VP9编码技术亮点

1.超级宏块

VP9的编码宏块称为超级宏块,超级宏块比以往宏块更大,它的范围从8×8到64×64,如图3所示。

2.帧内预测

VP9采用了10种帧内预测方式,并且帧内预测单元可以是长方形预测单元。增加了预测单元种类,可以更好地提高预测的精度,降低图像残差数据。

3.插值像素精度

插值像素的精度越高,图像还原的质量越好。VP9的图像插值精度达到了1/8像素精度,并且配备了三种不同模式的8阶插值滤波器:常规插值滤波器、锐化插值滤波器和平滑插值滤波器。

4.熵编码方案

VP9采用的熵编码方案是VP8采用的BOOL-CODER。该编码方案可以对数据进行前向和后向自适应,提高熵编码的数据压缩率。

5.分段编码

VP9增了分段编码,将具有相同特点的超级块组合起来形成一个段。这种特点能够在编码时降低编码的数据量,增加编码速度。

图3 VP9的超级块划分

1

四、HEVC, VP9以及H.264编码技术比较

4.1 HEVC同H.264编码技术比较

HEVC采用了更大的宏块,最大支持64×64像素的宏块,而H.264最大支持的宏块为16×16;HEVC的帧内预测方式有35种,而H.264只有10种预测方式;HEVC支持时域+空域的向量预测方式,而H.264只支持空域的向量预测方式;HEVC支持8阶的插值滤波器,而H.264只支持6阶插值滤波器;HEVC支持8×8/16×16/32×32的DCT变换,而H.264只支持4×4/8×8的DCT变换。

4.2 HEVC同VP9编码技术比较

两者的相同点是:相同的四叉树编码块划分机制;相同的混合编码方式;插值滤波器的阶数相同;都是用高阶的DCT变换;都使用前后自适应的熵编码方案。

两者的不同点是:HEVC使用35种帧内预测方式,而VP9使用10种帧内预测方式;HEVC的帧内预测只能使用正方形编码单元,而VP9可以使用长方形编码单元;HEVC的后期处理添加了SAO技术,而VP9后期处理器只有去块滤波器;HEVC定义了可以独立进行编码和解码的机制,VP9只定义了并行解码机制。

五、测试环境

5.1编码器选择

H.264/MPEG-AVC编码器:对于H.264/MPEG-AVC标准的测试,选用了开源的x264,使用2014年4月22日x264官网发布的最新版本。x264始于2003年,来自开源社区,它是一款高效、高速并且可靠的视频编码器。由于它在编码效率和计算复杂度的权衡方面非常优秀,很快在网络中得到了普及。现在,x264是互联网世界中最受欢迎、普及最广的编码器之一。

H.265/MPEG-HEVC编码器:x265是免费开放的开源HEVC的编码库,同x264编码器是同一组织开发。x265允许所有用户在GNU GPL 2授权协议下使用。基于x264的优秀表现,我们将x265作为HEVC的代表性编码器,选用最新的1.1版本。同时,在编码速度和CPU占用率测试中,也选用了商用HEVC编码器的2.0和3.0版本作为辅助测试。

VP9编码器:VP9编码器是谷歌于2013年7月12日发布的一款开源编码器。它隶属于LIBVPX,是一款开源、无授权的编码器。谷歌作为VP9编码器的发布企业,其发布的Libvpx-vp9是VP9编码器中的最具有代表性的编码器,我们选用最新的1.3.0版本。

5.2 参数设置及测试环境配置

表1 编码器参数设置

1

测试环境配置:

CPU: Intel i5 3470 ,四核心四线程,主频3.2GHZ

内存:4G DDR3 1600

操作系统:windows 7 64bit

5.3测试标准及测试素材

编码器的编码质量通过计算PSNR进行评判。

PSNR(峰值信噪比)是一种评价图像的客观标准,单位为db(分贝)。通常的图像一般在30-40db之间,PSNR越高代表编码图像质量越好。

测试素材选用的是5段1920×1080分辨率的视频序列和3段720×576分辨率的视频序列,每段视频序列的帧率都为25帧。为了节省测试时间,每个测试序列只编码200帧,也就是8秒的时间长度。5段1920×1080视频序列分别是美国歌舞、中国篮球、军队战斗、休闲时光和新闻宣传片

采用的码流比较基准:实验对各个视频序列1M到6M码流编码后的PSNR做了测试。1920×1080测试序列以编码码流5M为基准;720×576的测试序列则以编码码流2M为基准。因为素材同素材之间的测试数据会有起伏,我们选择多个测试素材结果的平均值来得出最终结论。

5.4 测试工具

VQMT(Video Quality Measurement Tool)全名为视频质量评估工具,是第三方组织基于OPENCV开源库编写的图像测试程序,可以支持YUV420、YUV444和YUV422等多种原始图像序列合适。它是一款免费的视频质量评测软件,能够测试包括PSNR,SSIM等多项主要视频质量指标,而且运行方便,简单易用。

六、测试结果

6.1 HEVC同H.264的测试结果

HEVC同H.264的比较,我们选择在默认速度下进行比较,原因是:x265和x264是同源的编码器,因此在默认下的参数也最为相近;x264在最高速度下的编码质量远远落后于其默认速度下的编码质量,无法反映出其真正的编码质量。基于以上两个原因,我们选择两种编码器的默认速度进行编码测试,多个序列的测试结果如图4所示。

图4 HEVC和H.264的默认编码速度(medium)下的多序列PSNR

1

表2 同等PSNR下HEVC较H.264的码流节省

1

六个视频序列的测试结果表明,在同等PSNR的条件下,HEVC较H.264平均能够节省38.83%的码流。

6.2 HEVC同VP9的测试结果

HEVC和VP9属于不同源的编码器,它们在默认下的参数设置完全不同。为了尽量保证测试的公平性,我们选择它们最快的编码速度进行编码测试。

图5 HEVC和VP9在最高编码速度(ultrafast)下的多序列PSNR

1

表3 同等PSNR下HEVC较VP9的码流节省

2

在同HEVC的比较中,VP9在图像质量上稍逊于HEVC。在同等PSNR的条件下,HEVC较VP9节省12.3%的码流。

6.3 三种编码器比较

表4 HEVC,VP9以及H.264的码流比较

1

从该表中可以看到,HEVC和VP9在数据压缩率上远远超过了H.264,均达到30%以上的码流节省,其中HEVC较H.264节省了38.83%的码流,VP9也节省了30%的码流。对于VP9来说,在视频压缩率上与HEVC大约有14%码流的差距。

6.4 6M码流下编码速度比较

图6 多编码器的6M码流的编码速度

1

图7 多编码器的6M码流的CPU占用率

2

从上图中可以看出,商用HEVC编码器的编码速度是最快的。但是对于算法的比较来说,有价值的数据还是x265和VP9的编码速度比较。对于VP9来说,由于VP9没有并行编码机制,使用单进程的编码速度较x265差距很大,CPU占用率仅有25%左右。为了发掘VP9的真实编码速度,所以同时开启了四个VP9编码器进程,CPU占用率达到了100%。这四个编码器同时编码同一视频序列,编码速度得到了极大地提升,平均速度达到了x265的编码速度1.4倍。对于HEVC来说,由于其具有非常完善的编码并行机制,CPU占用率全部都是100%。

6.5 HEVC实时编码测试

为了测试HEVC的实时编码,我们使用了分别使用了实机4核心和虚拟机8核心及24核心两种CPU配置进行编码测试,它们的主频都是3.4GHZ,测试的码流选定在6M码流。

图 8 商用HEVC编码器6M实时编码速度(FPS)测试

1

图9 x265编码器6M码流实时编码速度(FPS)测试

2

通过以上测试,可以看出商用HEVC编码器在使用8核心的CPU编码的条件下,可以达到每秒30帧的实时编码。而对于x265来说,因为编码速度本就慢于商用编码器,所以需要使用更多的CPU来达到实时编码。最终,当使用了24核心的CPU后,x265编码器基本可以达到每秒25帧的实时编码。

结论

HEVC是H.264的下一代视频编码标准,而VP9是VP8的后继者。通过上述的比较,可以得到如下结论:无论是HEVC还是VP9在数据压缩率方面均超过了H.264,完全可以取代H.264成为广泛普及的视频标准。VP9在视频压缩率方面稍逊HEVC,这种差距在算法中可见端倪:VP9的帧内预测方向少于HEVC;后期处理技术中缺少像SAO一样的对提高PSNR十分有用的滤波器;VP9的熵编码方案BOOL-CODER也稍逊于HEVC的CABAC熵编码方案;VP9缺少B帧,也会对压缩率产生一定的影响。但是,VP9由于具有无使用授权费,编码速度可以大幅提升等特点,得到了大量厂商的支持。HEVC依然保持了H.26X系列编码器在数据压缩率方面的优势,应该说在数据压缩的每个步骤都得到了十分完美的处理。基于以上论述,我们认为未来的VP9同HEVC将会得到广泛的普及和应用。

参考文献

[1]G. J. Sullivan, J. Ohm, W. Han, T. Wiegand, “Overview of the High Efficiency Video Coding,” in IEEE TCSVT, vol. 22, no. 12, pp. 1649–1668, 2012.

[2]B. M. T. Pourazad, C. Doutre, M. Azimi, P. Nasiopoulos, “HEVC: The New Gold Standard for Video Compression: How Does HEVC Compare with H.264/AVC?” in IEEE Consumer Electronics Magazine, pp. 36–46, 2012.

[3] A. Grange, H. Alvestrand, A VP9 Bitstream Overview (Internet-Draft),Google, August 2013.

[4] Debargha Mukherjee, A Technical Overview of VP9:The latest royalty-free video codec from Google,Google,2013.

[5]B. Bross, W.-J. Han, J.-R. Ohm, G. J. Sullivan, and T. Wiegand,High Efficiency Video Coding (HEVC) Text Specification Draft 9, JointCollaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, document JCTVC-K1003, Shanghai,China, Oct. 2012.


来源:微信公众号(微信ID:正奇联讯),作者:何海东编风网专栏作家

5
相关文章!
  • 1486631713(1) WebRTC视频采集模块和数据流水线建立
    - 阅 1,254

    本文在深入分析WebRTC视频采集、SDP协商和VideoEngine源代码的基础上,重点研究其视频采集模块的实现,视频数据流水线的建立,和视频数据从采集到待编码的流向。

  • 0-1 WebRTC的模块处理机制
    - 阅 1,179

    本文在深入分析WebRTC源代码基础上,学习研究其模块处理机制的实现细节,从另一个角度理解WebRTC的技术原理。

  • 0 Web 前端实时化
    - 阅 693

    实时作为 H5 的核心思想之一,意味着便捷的交互体验、高效的网络传输、快速的交流和更多的机遇,但由于 Web 对于实时天然缺乏支持,传统的 Web 技术并不适合实时化场景。

  • 0 webrtc中的网络反馈与控制
    - 阅 2,714

    本文主要介绍WebRTC中网络反馈与控制的方法和策略。