Facebook和用户生成内容(UGC)平台以十亿级的规模对视频进行编码,并通过不同的网络向世界各地的各种设备(手机/笔记本电脑/电视)传送。UGC视频的受欢迎程度差异很大,从非常受欢迎视频的数百万次观看到私人分享视频的相对较少的观看。并且,提高视频编码的压缩率对于降低终端用户和基础设施供应商的数据使用成本,以及在低带宽网络中提供良好的体验质量至关重要。
如今人们在Facebook上浏览时的一半的时间都是用于观看视频,视频的编码和传输对于计算量的消耗较大,也因此视频编码在Facebook的后端所占据的计算量也逐渐增长。因此,Facebook开始致力于研究使用硬件设备来加速视频的编码传输,并提出了使用ASIC进行高负载的视频编码传输任务。ASIC硬件编码更加高效,可以用更少的计算量达到更优RD性能。
RDX技术
然而,固定功能的硬件只能够提供有限的功能,还需要针对大量不同特性的视频进行优化以实现更好的压缩性能。随后演讲者对RDX(Convex Hull encoding)技术进行了介绍。
RDX可以对于任何的输入视频在RD曲线上寻找最优的编码操作点。RDX是一个两阶段的处理过程,这两个阶段分别被称为L1和L2。在L1中,采用不同的分辨率和CRF来对视频进行编码,以得到一系列的不同的RD曲线。根据这一系列的RD曲线,可以计算得到这些RD曲线的凸包,进而得到最优的编码操作点。
该技术已经在产品中得以使用,并且可以根据不同的内容选择最优的编码配置,并且在2020年展现出了较好的压缩性能提升,达到了15%左右。
在RDX中,由于需要探索非常多不同配置的组合,因而是非常消耗计算资源的。为了减小计算的复杂度,可以在L1的编码阶段,即复杂度最高的RD曲线探索阶段,使用更加快速的编码器来进行。使用快速的编码器可以明显减小计算复杂度,并且找到近似最优的RD曲线。例如,对于计算复杂度非常高的AV1编码器来说,可以只在L2阶段使用AV1编码器,而在L1阶段使用VP9编码器更快速度的preset来进行。这样的配置下,最终投影的凸包相比于两个阶段都是用AV1编码器的方式也可以达到近似最优。
通过使用上述策略,可以对RDX进行优化,并使其能够对大部分的UGC内容适用。通过将ASIC应用在L1阶段,最终的RD性能上相比于完全使用软件编码器的情况只下降了2%。这种软硬件结合的RDX方式也被用在了目前Facebook的产品中,能够适用大部分的内容。
使用ASIC已经可以明显的减少算力的消耗,因此Facebook在未来进一步的目标则是实现在L2阶段也进行快速的编码,例如使用编码器更快速度的preset,或是在L2阶段也使用ASIC进行完全的硬件编码,并在确保压缩性能的前提下减小算力的消耗。
UGC视频的特点及其编码方式
UGC视频的一个特点在于其受欢迎程度差别很大,如下图中的表格所示。大量的UGC视频浏览量相对较少,而流行的”病毒式”视频则可以有数亿的浏览量,而这些视频也占据了大部分的观看时间。因此,对于不同受欢迎程度的视频,可以使用不同的编码器来对其进行编码。另一方面,能够选择的编码器种类也非常多,例如H264/Vp9/AV1,且不同的编码器也可以有不同的预设和配置。因此,如何为每个视频挑选合适的编解码器和预设配置,以实现计算复杂度和压缩效率之间的权衡成为了问题的关键。
下图展示了不同编码器在不使用RDX技术下的归一化计算复杂度和压缩效率的凸包。其中使用x264 very slow 下的计算复杂度和RD性能作为1。因此下图x轴中的10则代表该点所需的计算复杂度为x264的10倍,而y轴上的2则表示该点的在保持相同质量下只需要50%的码率。从图中的曲线可以看出,消耗更多的算力,可以使得编码器取得更好的压缩性能,对于更高级的编码器来说,相同的计算复杂度下可以实现更好的压缩性能。
虽然较新标准的编码器可以在相同的计算复杂度下实现更好的压缩性能,但由于Facebook的视频会在各种不同的终端设备上进行播放,较新标准的解码器并非在所有设备上都支持,因此仍然需要在有VP9/AV1编码时,保留H.264编码。因此在压缩效率与计算复杂度的权衡中,新老编码器都需要进行考虑。
下图展示了在使用ASIC-RDX技术下的不同编码器的性能,同时也对比了在L1阶段使用ASIC硬件编码加速,L2阶段使用不同preset配置下的软件或ASIC进行编码的效果。对比不使用RDX的方法可以看出,对于不同的编码器,ASIC-RDX都可以通过阶段1的ASIC编码来实现以较小的额外计算量获得RDX技术能够带来的压缩性能增益。
在得到凸包后,接下来的问题即为如何为不同的视频选择编码的操作点。具体来说,假设一个视频选择VP9进行编码,相比于H.264,在归一化计算复杂度为5的情况下,可以实现1.3倍的RD性能增益。假设80%观看时间的终端设备可以支持VP9,其余的设备则只能使用H.264观看,则可以根据这个比例,对压缩效率与计算复杂度进行加权计算得到实际情况的估计。这样就可以将观看时间分布与终端设备对编码器的支持考虑进来。
因此,为了在给定的算力下,最大限度地提高整体压缩效率,更受欢迎的视频应当使用更高计算量的编码器,即使用高级编解码器的操作点。具体来说,对于大规模视频的优化,可以使用线性规划的方式进行处理。通过对算力限制、观看时间分布、终端对编码器的支持以及不同编码器的压缩效率和计算复杂度的凸包作为线性规划需要考虑的数据,则可以为每一个视频快递迭代得到不同的最优编码器选择与配置。
该问题也可以从另一个角度去理解,即从给定压缩效率下如何使用最小的计算复杂度来达到。利用ASIC-RDX技术,并结合上述线性规划模型,可以实现显著的算力节省,如下图所示。并且,该线性模型可以通过迭代更新的方式,将播放器对高级编解码器支持的增长、视频数量的增长变化、观看时间分布的变化以及软件编码器和ASIC的效率改进的变化纳入考虑中。
总结
对于大规模的UGC视频编码,同时优化计算复杂度与压缩效率是非常必要的,它能够在可持续的算力要求下确保编码后视频的高质量观看体验。并且,ASIC以及RDX技术在实现这一目标中有着关键的作用。
来源:At Scale
主讲人:Shankar Regunathan, Srinath Reddy
内容整理:张一炜
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。