前言
高清直播逐步遍及,硬编码也成为大势所趋。在 RTE 2022 大会上,来自 NETINT 的 Jan Ozer 通过一系列的比照测试后果,具体分享了如何为高清直播互动场景进行硬编码的技术选型。
本文内容基于演讲内容进行整顿,为不便浏览略有删改。
大家好,我是 Jan Ozer。明天咱们要探讨的是高清直播场景中的编码技术。咱们将聚焦于高清(High-density)视频直播场景进行明天的分享。如大家所见,市场越来越青眼高数据量流媒体,硬件编码也成为了大势所趋。
有四种编码方式供大家抉择:CPU、GPU、FPGA 和 ASIC,接下来咱们来聊聊该如何抉择。
其实就是具体要思考不同编码方式的个性、老本(资本收入和运维收入)和能耗,很显著能耗也会影响运维收入以及碳排放问题。
做任何抉择都要从找到你的工作点(operating point)开始,演讲开端会着重阐明这一点。
咱们关注的是高清视频直播流媒体,比方云游戏、互动视频、AR、VR 和元宇宙等,不波及视频点播场景。
演讲中只谈判到视频点播的品质问题和 ASIC 在这方面的体现,但探讨重点还是直播转码。
第一点:软件编码对高流量的直播转码来说较为低效,这个试验会通知你为什么。
咱们用三台不同的电脑进行测试:戴尔 R640、技嘉 R272 和戴尔 R7525。外围数的配置别离是 48、80 和 64。而后,咱们还给这三台设施装置了 T408 转码卡进行测试。配置别离为 10、24 和 24。咱们测量了这两种办法的性能:装置 T408 且应用 ASIC 的状况下,比照只用软件,应用 X264 疾速预设状况下各设施的 FPS(每秒传输帧数)。测试性能包含:FPS,能耗,以及这三台电脑在每个配置中每瓦特的 FPS。
咱们发现,两种状况下,应用 T408 的 FPS 要高 13 倍,耗电量相近。尽管必须给 T408 供电,然而因为原来计算机大部分电力都供应 CPU,而如果装置了 T408,CPU 工作量会缩小很多。所以两种状况下,整体耗电量是差不多的。
也就是说一台 NVME 服务器,一台装置了 10 个或 24 个 T408 的服务器性能相当于约 13.1 台只用软件进行编码的电脑。
因而,软件编码意味着 7 到 8 倍的老本收入,13 倍的功耗。
应用 HEVC 的状况会更蹩脚。因为它是很简单的一种编解码器。如果在只用软件的状况下,运行会十分迟缓。
如上图这组测试中,咱们用搭载 ASICS 的 HEVC 和应用 X264 medium 预设的纯软件做比拟。同样,测试指标为 FPS,瓦特和每瓦特的 FPS。
能够看到,相比而言 T408 的 FPS 比纯软件高出 55%。而两者的耗电量还是差不多。
论断表明,不论是从资本收入,还是运维收入的角度来看,纯软件编码对直播流媒体利用来说都太低廉了。
因而,咱们来看一下用硬件代替的计划。抉择有 CPU、GPU、FPGA 和 ASIC。你会如何从它们中抉择呢?
让咱们先来梳理一下这些硬件选项:CPU,中央处理器;GPU,图形处理器;FPGA 是现场可编程门阵列;ASIC 是专用集成电路。
艰深来讲是什么意思呢?
- CPU 是驱动整个计算机的通用处理器。
- GPU 是能够驱动图形以及执行其余性能的通用处理器。
- FPGA 是一种可编程的设施,你能够用它来做很多事件。
- ASIC,当它以压缩视频为目标产生时,它所做的就是解决视频。
对应的产品例子有:英特尔 Intel Xeon Platinum 8280 处理器,22500 美元,英伟达 T4,2299 美元,AMD/Xilinx Alveo U30,大略 2000 美元。还有这次演讲中会提到的 NETINT Quadra T1,它的价格约为 1500 美元。
如上图所示,每一种硬件的最大功率也不同。CPU 的功率最大,而因为 ASIC 只须要解决视频,所以它的功率最小。
接下来,让咱们对这些硬件选项进一步分类。怎么能把这些硬件增加到服务器上呢?
CPU 通常放在主板上。GPU 和 FPGA 放在 PCI 插槽中。像 Netint 的 Quadra 单元这种 ASIC 既能够放在 PCI 插槽中,也能够放在 U.2 插槽中。U.2 是一种十分无效的形式,能够在服务器上增加多张转码卡。
不同的设施之间,软件集成是相似的。大多数都有 FFmpeg 和或 Gstreamer 性能,以及用于软件开发的独立 SDK。
而说到用于转码的芯片可用率:CPU 十分小。CPU 是一个通用设备。因而该设施中只有一小部分是专门用于视频转码的。GPU 要好一点。FPGA 也能够。但 ASIC 的芯片齐全是为视频解决而设计的。这意味着它在功率和吞吐量方面的效率都更高。
对于编码的吞吐量:因为 CPU 可用于视频转码的局部很少,所以从设施的总体门数来看,总体吞吐量会绝对较小。GPU 和 FPGA 好一点。ASIC 体现优良。因为它就是为视频解决而生的。
综上所述,按流的老本来计算的话,CPU 是最贵的。GPU 和 FPG A 会便宜一点,但 ASIC 通常才是最实惠的抉择。
参考上一张幻灯片里各项的功耗,因为 CPU 的功耗十分高,流的输入又非常低,它每个流的功耗会十分高。GPU 和 FPGA 每个流的功耗稍低一点,但最效率最高的还是 ASIC。
那么,高清利用选其中哪一种呢?
CPU 并不适用于高清利用。因为它须要大量电力,且物理集成必须在主板上。选 GPU 和 FPGA 会稍好一些。这两种硬件都采纳 PCI 模式,功耗更低。但 ASIC 会是最佳抉择。因为它的功耗最低,且它的外形尺寸最不便集成到服务器中。
那么,像 Youtube 这样的产品会抉择哪种计划呢?
它们采纳的是 Argos,google 自研的专用于视频转 / 编码处理单元。在采纳 Argos 时,Youtube 抉择了 ASIC。因为它是解决视频最无效的形式。
咱们认为对于其余公司来说,同样是 ASIC 的 Quadra 能够成为他们的 Argos。这样说是因为,大多数公司无奈设计本人的 ASIC。其实没有必要本人来,因为大家能够从 Netint 购买 ASIC 服务,比方 T408,或者 Quadra(接下来会具体介绍)。
那么,到底应该怎么在这些备选计划中抉择呢?我会按如上图的程序进行阐明。首先明确各硬件性能,确保它能够满足你的需要。而后理解影响品质和吞吐量的因素,再用各种内容类型进行测试。接下来,抉择你的最长处。等下咱们会具体探讨这一块。而后进行计算。计算每个流的老本和应用该最长处的每个流的品质。
如上图,是你要查看的硬件功能表,表中已标注了 NETINT Quadra 一项。能够看到,Quadra 反对 H.264、HEVC 和 AV1。在解决性能方面,Quadra 能够进行解码、编码、缩放和叠加,甚至还有人工智能,第三方编码器通常都不具备这项性能。
当初,在理解特定设施上包含哪些性能后,你须要确保在应用该设施生成文件的命令流中蕴含这些性能。以 NETINT Quadra 的命令流为例,这条流用于解码,即应用硬件解码器。如果命令流里不蕴含解码这一条,而是间接进入源文件,那你只能应用软件来解码,这会升高整体吞吐量。
这里是用 NETINT Quadra 抉择 H.264 编解码器。这里是用 NETINT Quadra 进行缩放。第一个个 rung 是在源分辨率下生成,所以没有缩放。上面的 rung 按比例从 1080p 缩放到 720p。而命令流中没有蕴含所有所需硬件性能,就会影响到最终的吞吐量。失去的吞吐量会比应用卡上所有可用硬件性能所失去的量要少。
接下来,咱们来谈谈品质问题。在大多数直播转码中,咱们通常会用绝对较低的品质预设部署利用,以缩小计算周期,实现吞吐量。如果你用 x.264/x.265 进行转码,你通常在高水平状况下应用中等预设,在低水平状况下应用超快或十分快的预设。而如果是 SVT-AV1,你必须应用 10-12 范畴内的预设,以达到实现实时操作所需的吞吐量。
现在,大多数硬件编码器的品质都在这个范畴内,所以后果不会和那些应用更慢或更高质量预设的软件编码器雷同,但会用于直播转码利用的软件品质雷同,该软件用的是典型预设。
为什么呢?因为硬件限度了操作。为了取得适当的吞吐量,当你转码时,你须要硬件吞吐量,这就是为什么品质被设置在这个范畴。咱们稍后会详述这个问题。
如图,图中展现了应用 X.264 编解码器按预设产生的品质和编码工夫。最上面这根曲线代表编码工夫。能够看到,从编程工夫占比非常少的状况,始终到到十分慢预设这里。曲线开始很低,而后骤升。蓝色曲线代表整体 VMAF 品质。红色曲线代表低帧品质,用来掂量瞬态品质的偏向。在这一点咱们会失去绝对低的资源和更低的品质。但这是直播转码时必须做的,以此来取得吞吐量。这就是资源和品质的均衡。
而这一点,在中等预设下咱们会取得 99.5% 的品质,与咱们在十分慢预设状况下,取得的最高品质雷同。而 96.1% 的低帧品质是在大概 12.5% 的编码工夫实现的,但其实在该工夫条件下,你会致力于实现十分慢的,或极慢预设。
上述阐明了资源和品质的均衡。这是真正的收益递加。因为在你的编码工夫显著减少时,品质增长并不是那么显著。因而,对于大多数不须要直播运维的视频点播编码来讲,不论预设是中等,较慢还是十分迟缓(通常不会用极慢预设,因为无论怎样都不能拿到最好的品质),你投入了 3 倍的编码工夫,只能取得微不足道的品质劣势。而对直播制作来说,问题在于咱们始终在议论的吞吐量。
通常是 HEVC 应用超高速预设,H.264 十分快,后果不会超过中等品质。就 Quadra 而言,这里是这些设施的总体品质指标。之后咱们会开展阐明这里的数字。
我想做个试验,看看相比咱们方才看到的软件预设和 NVIDIA T4,Quadra 的品质是多少。所以我对五个文件进行了编码:足球游戏、钢铁之泪、侠盗飞车、子午线和奇幻的晚宴,而后用不同的阶梯生成 85 至 95 的 VMAF。
我对侠盗飞车的文件进行了编码,剪辑成 6Mbps 的速度,拉低了所有平均数。所以尽管我的指标是 85 到 95,但因为咱们生成了 6Mbps 的 GTAV,VMAF 的总体平均数会更低一些。稍后会在速率失真曲线上具体展示。
通常一些人会应用的最大值,1080p。我应用的编码参数:是我用 NVIDIA 生成的。这是我在网上找到的两个文件中学来的,你能够从网上找到,并理解他们举荐的办法。而后我测量了整体的 VMAF 和低帧 VMAF,方才我有提到过,它能够掂量瞬态品质的偏向。咱们来看看这些速率失真曲线。红色代表 Quadra,绿色代表 NVIDIA,紫色代表 VeryFast 配置,蓝色代表中等配置。这是 H.264 总体的 VMAF 品质。
能够看到 Quadra、NVIDIA 和 Medium 预设之间的分数十分靠近,Quadra 比 Medium 和 NVIDIA 略微高一点。而 Quadra 遥遥领先于 VeryFast 预设。
咱们个别应用 H.264 的最低品质预设就是 VeryFast,因为能够失去较好的吞吐量,品质也不错。能够看到,NVIDIA 和 NETIENT 的体现都比 VeryFast 好很多。
而后再来看看低帧分数,如上图,同样也有瞬态品质的偏向。能够看到 Quadra 的体现要好于 Medium 和 NVIDIA,而 Medium 处于两者之间,较好于 NVIDIA。Quadra 遥遥领先于 VeryFast,后者更容易存在低帧率问题。
HEVC 也是一样。Quadra 的分数较高于 Medium,优于 NVIDIA,同时远超 VeryFast 预设。在低帧分数中,Quadra 比 Meduim 高的就比拟多了,同时远超 NVIDIA 和 VeryFast。
总结一下,在抉择你的 Operating point 时,要多加思考。但最根本的事实是,Quadra 在 H.264 和 HEVC 中能提供中等以上的品质,吞吐量更高,能耗更小。
这给咱们留下了一些揭示:我不是 NIVIDIA 编码专家,这是我第一次尝试用 T4 进行高容量转码。我尽力去把他们一一对应作比拟。然而各位应该本人进行测试,如果有任何问题,应间接分割 NVIDIA,确保操作无误。
接下来咱们就谈一谈之前提到屡次的最长处。
最长处就是各位在制作中应用的编码参数,这些参数为利用提供了品质和吞吐量的最优联合。咱们关注最长处时因为所有的供应商都会给出吞吐量数据和品质后果。但他们不会在品质和吞吐量中应用雷同的配置。当初各位应该明确最长处的重要性了。
所以各位在比拟硬件设施时,第一步就是确认影响品质和性能的配置选项。在 NETINT 中,影响品质和性能的要害配置是 Lookahead,即编码帧之前帧。这样编码器就晓得接下来会产生什么,从而晋升编码品质,尤其是当场景正在或行将扭转时,能够进步比特率效率。这会升高性能,缩小吞吐量,当然也会减少 Lookahead 的提早。
上面咱们来看一看 Lookahead 的定性影响。这是莫斯科州立大学视频品质测量工具的后果图。展现了逐帧比拟两个文件的 VMAF 分数后果。红色局部有 40 帧的 Lookahead 编码区,而绿色局部则没有 Lookahead 编码区。能够看到没有 Lookahead 的区域有十分多的低帧。这些都是瞬态品质问题的潜在区域。
所以 Lookahead 的确会影响你的低帧分数。这些分数阐明了什么呢?
就应用和谐平均值计算的总体 VMAF 分数而言,咱们能够看到有 2.3 VMAF 分的差值,这有显著的差别。一些研究者认为观看者能够辨认出 VMAF 3 分的差异。在低帧分数中,差值十分显著,从 75 分降到了 59 分。观看者必定能够留神到两个剪辑中的低帧区域。标准差能够掂量品质可变性,这里有 1 分的差值,也是比较显著的。但在吞吐量中,不应用 Lookahead 的局部与应用 40 帧 Lookahead 的高出了 50%。这样你就能明确,为什么公司可能在计算吞吐量时禁用 Lookahead,而在计算品质时启用 Lookahead。这也是咱们在比拟 NVIDIA 和 NETINT 时要钻研的外围问题。
在 NETINT 中能够扭转的另一个配置选项是率失真优化(RDO),预设基本上就是 RDO。RDO 能够晋升品质,但会缩小吞吐量。理解了最能影响品质和吞吐量的配置选项后,你能够创立各种测试来运行这些配置选项,从最简单、品质最高的,到最简略、品质最低的。(在 Jan 的演讲中,具体分享了一些 NETINT 的测试数据,感兴趣的能够在文末扫码观看演讲回放。)
总结一下,当你比拟硬解码器时,首先要明确最能影响品质和吞吐量的要害配置选项,测试多种配置来确定 OP。应用这些参数来测试多个文件的品质和吞吐量。应用技术来输入最佳的品质组合,包含均匀帧和低帧、资本收入和运维收入,以及能耗。