首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >准备好迎接AV1的黄金时代了吗?

准备好迎接AV1的黄金时代了吗?

作者头像
LiveVideoStack
修改2019-10-17 10:32:35
9330
修改2019-10-17 10:32:35
举报
文章被收录于专栏:音视频技术音视频技术

尽管AV1的编码速度距离理想的水平还有一定差距,但是随着rav1e(由Xiph,Mozilla和Vimeo支持)和SVT-AV1(由Netflix和Intel支持)的大规模部署,这一现状有望被迅速突破。

文 / Ewout ter Hoeven

译 / john

今天,我将演示SVT-AV1如何以相同码率更快地提供更高质量的内容。结合dav1d的快速AV1解码, AV1编解码器即将为全面推广做好准备。

第1部分:质量

除了免费和开源之外,AV1的最大优势是能在相同码率下实现更高的质量。rav1e开发人员已经构建了一款出色的用以对比视频质量的工具,其被称为AreWeCompressedYet?。我向其提交了libvpx、x265和SVT-AV1编码器的运行代码,其中前两个为现阶段适用最广泛的高质量编码。

在X轴上,码率以每个像素的位数表示。因此0.02表示每个像素平均花费0.02位,而0.1表示每个像素平均花费0.1位。例如,对于1080p 30fps的视频,其码率分别为1,25 Mb / s(每个像素平均花费0.02位时)和6,25 Mb / s(每个像素平均花费0.1位时)。

对于x265和libvpx,我们就以下三种情况进行测试:最高质量、最慢速度(veryslow)与CPU零使用率(cpu-used=0)(x265 placebo?导致该测试集的质量较差)。SVT-AV1在下图中使用Enc-mode 4与Enc-mode 6,而SVT-AV1具有更快与更慢的模式,范围从Enc-mode 8到Enc-mode 0。

首先是PSNR和MS SSIM,这两项客观指标都可以计算输入和输出视频流之间的数学误差。我们将这些值显示在Y轴上,值越高表示质量越高。

在PSNR和MS-SSIM指标上,SVT-AV1 Enc-mode 6(绿色)和Enc-mode 4(黄色)均提供比x265(红色)和libvpx(蓝色)更好的客观质量。

随后我们继续加入了一个主观指标,该指标应更好地代表用户如何体验视频质量—— VMAF由Netflix开发,旨在更好地评估用户的感知质量。

SVT-AV1的主观质量比客观质量差一些。Enc—mode 4仍然胜过libvpx和x265,但是Enc-mode 6稍差一些。

第2部分:速度

为了比较速度,我启用了一些Google Cloud实例以实现公平的比较。两个实例基于64 GB DDR4的Cascade Lake平台并都使用16个vCPU(8个内核,16个线程——SVT-AV1在16 GB btw上运行良好)。此设置下的性能应与配备Ryzen 7 3700X或Core i9-9900K的高端台式机相当。

所有编码器均使用带有Release配置的GCC 8.3.0进行编译。我对两种情况的两个文件进行了基准测试:代表常规1080p内容的1250帧1080p 8位4:2:0剪辑和代表高端HDR电影内容的250帧2160p 10位 4:2:0剪辑。每个编码器运行两次,并使用最快的运行速度。下面的结果以每秒帧数为单位:

如我们所见,SVT-AV1Enc-mode 5、Enc-mode6和Enc-mode 7明显比libvpx和x265都快。同样,libaom甚至在快速预设(cpu-used = 5)下也非常慢。

规范化后,差异变得更加清晰。

在8-bit 视频“Sintel“上,Enc-mode 4比libvpx快32%而比x265慢4%。Enc-mode7在10-bit视频”Foodmarket“上与基准的差距甚至更大。

第3部分:深入研究

因此,我们现在已经全面了解,与libvpx(VP9)和x265(H.265)相比,SVT-AV1可以同时更快,并以相同的码率提供更高的质量。在本节中,我将深度比较不同的SVT-AV1编码器模式下所需的位数。我们将主要关注MS-SSIM的客观质量和VMAF的主观质量。

Enc-mode 7

在Enc-mode7中,SVT-AV1仍需要3.6%~9.2%甚至更多的位数才能达到与libvpx相似的MS SSIM(客观)质量。对于类似的VMAF(主观)质量则取决于分辨率,为9.5%~23.4%甚至更高。

与x265相比,其结果要好一些,它使用1.6%~10.9%甚至更少的位数实现相似的MS-SSIM质量;而VMAF下所需位数则更少,为10.4%~1.4%。

同时,SVT-AV1比libvpx快6,42倍,比x265快4,68倍。

Enc-mode 6

与Enc-mode7相比,Enc-mode 6将达到相似质量所需的位数减少了约4%~8%;与x265相比,MS-SSIM的码率现在显著降低;而与libvpx相比,其码率仍需要更高一些。

Enc-mode 6比libvpx快4.60倍,比x265快3.35倍。

Enc-mode 5

Enc-mode 5在MS-SSIM指标上击败libvpx拔得头筹;在所有指标上,它几乎都比x265更好。

Enc-mode 5比libvpx快3.01倍,比x265快2.2倍。

Enc-mode 4

Enc-mode 4通过大幅降低双位数的码率得以优于x265。平均来看,对于实现相等的PSNR质量,它需要20.1%甚至更少的位数;对于实现相等的MS-SSIM质量则需要19.2%或者更少的位数;而对于实现相等的VMAF质量则需要9.2%或者更少的位数。同时,Enc-mode4仅比基准慢4%。

而与libvpx相比其增益要更小一些,在实现相同的PSNR、MS-SSIM和VMAF质量下,平均码率分别降低了8.8%、9.0%和3.1%。但是,Enc-mode 4可以32%的较高速度实现相同质量。

结论

尽管SVT-AV1仍处于大规模的开发之中,但其已经达到了基于多核计算机以相同的码率在更高速度下实现更高质量的效果。在使用Enc-mode 4的大多数高端计算机甚至在使用Enc-mode 6或更高版本的中档计算机都可为长达一小时的视频进行长时间的编码。

可以在SVT-AV1存储库中找到该架构说明,同时也提供FFmpeg和Gstreamer的插件(补丁)。您可以在AppVeyor上找到预编译的64位Windows可执行文件,该媒体autobuild_suite还支持SVT-AV1为FFmpeg的构建与SVT-AV1补丁。

x86和ARM平台上的AV1解码器性能

x86

PC市场的AV1解码已经非常成熟。过去的几个月中,dav1d内被添加了许多SSSE3程序集用以提高其在较旧的CPU(Haswell和Zen之前的版本)上的性能。

借助dav1d 0.5.0,AVX2性能也有所提高,图中显示的结果已经非常快了。

Google创建了一个新的解码器libgav1。其主要针对ARM CPU进行优化。在x86上进行的快速测试表明,在几乎所有情况下,即使是单线程性能,libgav1也比dav1d和libaom都差。

因此,现在我们暂时不谈针对x86的libgav1,让我们看看dav1d 0.5.0与libaom的比较测试结果。单线程dav1d的速度在1.5到2.5之间。

可以看到,多线程的提升为2.3到4.5倍。

ARM

现在,如何在受到锂电池能耗限制的移动设备ARMv8平台上启用AV1软件解码并尽可能发挥其效能成为大家探索的首要领域。在过去的一年中,我们看到dav1d的性能稳步提高。单线程性能提高了30%到50%。

自发布以来,多线程性能甚至提高了80%至90%。

那么,让我们看看新产品表现如何——libgav1的单线程仍然比libaom和dav1d慢很多。它是多线程的,与libaom差不多但与dav1d差异明显。

回顾一下dav1d,在常见商用化的CPU上,我们看到像Snapdragon 410这样的低端CPU仍在1080p解码方面遇到不小的困难,720p应该是非常可行的;而当CPU包含4个高性能内核时,像Snapdragon 835这样的高端设备可以以超过60 fps的速度执行1080p解码。尽管这会影响电池寿命,但是对于短时间帧序列而言没什么大不了的。

结论

Dav1d 0.5.0将于本周发布,其仍然是市面上最快的AV1解码器。由于增加了SSSE3组件,现在几乎所有x86 CPU都可以进行1080p AV1解码,并且几乎所有四核CPU都可以使用4K。在ARM方面,低端设备可能有720p,高端设备可能有1080p,但是必须考虑能耗对电池的影响。

未来我们将进一步测试编解码能耗与电池寿命之间的关系。

●     这些AWCY运行:https  ://beta.arewecompressedyet.com/  job x265-veryslow-limited%402019-08-23-c job  vp9-cpu0%402019-09-03  job SVT-AV1-enc-mode-7  %402019-10-06&job= SVT-AV1-enc-mode-6%402019-10-06&job= SVT-AV1-enc-mode-5%402019-10-06&job= SVT-AV1-enc-mode-4%402019-10-06

●     这些效果结果:https  :  //docs.google.com/spreadsheets/d/1p3PJQMkyhIrXEL6MBBQiwTnWmGyHY_zuw7_XAD0def4/edit#gid=959310253

●     这些编译和基准测试命令:https  :  //gist.github.com/EwoutH/b908f3527d630326266de0d6e2a953fd

●     运行Ubuntu 18.04 LTS的Google ComputeEngine n2-standard-16(16个vCPU,64 GB内存)Cascade Lake实例

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第1部分:质量
  • 第2部分:速度
  • 第3部分:深入研究
    • Enc-mode 7
      • Enc-mode 6
        • Enc-mode 5
          • Enc-mode 4
          • 结论
            • x86和ARM平台上的AV1解码器性能
              • x86
                • ARM
                  • 结论
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档