实时转码是在云中实施的理想操作,因为它能降低出站带宽要求和资本支出。但随着分辨率的提高和编解码器越来越高的复杂度,在一个单云实例中编码你的完整编码梯变得越来越困难,并且如果将任务拆分到两台或更多台机器中会增加成本和复杂度。值得庆幸的是,这里有多种解决方案可以实现高效率的大容量云转码,其中包括2018年11月在Streaming Media West展示的几种解决方案。
让我们自下开始(从效率的角度来看):纯软件的x264或x265编码,它通过安装在云实例中的FFmpeg实现。只要你能生成一个四到六行的H.264编码阶梯,应该就可以在一台机器上进行编码。
下面说一下纯软件编码器(它比FFmpeg更有效)。在Streaming Media West的演讲中,IDT’s Lowell Winger解释了该公司的软件和硬件加速编解码器是如何部署多种技术的,并且和用于H.264编码的FFmpeg相比,提高了高达40%的吞吐量,这就意味着和一个plain-Jane FFmpeg解决方案相比可以节省大量成本。
当然,除了纯软件的x264和x265编解码器之外,FFmpeg还提供了几种更高效率编码的硬件加速编解码器。例如,根据你的CPU,FFmpeg支持通过Intel Quick Sync进行H.264、H.265和VP9的编码和解码,这个可以在大多数云实例上使用。你还可以通过NVIDIA GPUs实例访问NVIDIA加速的H.264和HEVC编码。你也可以利用第三方、GPU加速的编码,如IDT的HEVC编码器,它可以在一个消费者现成的服务器平台上转码4Kp60 10位的HDR HEVC。
下一级的性能由现场可编程门阵列(FPGA)得到,FPGA是一种可编程以接近特定应用芯片组性能的通用硬件设备。像AWS这样的云服务,正在部署提供各种功能的基于FPGA的实例,不同的软件开发人员可以访问这些实例。在Twitch’s Tarek Amara的讲话中(在Twitch TV的VP9直播),他说到他们的服务是如何使用Xilinx FPGAs去部署实时的VP9编码(Xilinx FPGAs由NGCodec软件驱动),这是一个对VP9、FPGA和NGCodec的很大的技术认可。请注意,您可以直接从AWS Marketplace的NGCodec中提供FPGA驱动的HEVC和VP9编码。
当然,最有效的转码始终是由特定应用的编码硬件得到的。在Streaming Media West上,NETINT Technologies’ Ray Adensamer说了他公司的Codensity T400系统级芯片(SOC)编码器如何在安装了10台T400s的单个1RU服务器中能启用80x 1080p 30 H.265的会话。但NETINT并没有将T400作为独立的编码设备销售,设计它的目的是将它用于基于NVM Express的存储服务器中的安装。(简而言之,NVM Express或NVMe是一种接口规范,被用于基于SSD的存储到服务器的连接(该连接通过PCI Express总线实现)。NVMe被用于云设施中,另外也越来越多地被用于企业里。据推测,NVMe的使用将简化大规模编码商店的本地部署,甚至能让云服务在基于标准的平台中安装特定应用的设备。)
将需要GPU、FPGA和基于NVMe解决方案的编码平台与纯软件编码相比时,虽然前者计算每个流的成本相对简单,但很显然它的每小时成本会更高。质量分析不太简单。英特尔和基于NVIDIA的编码的对比一直都是比较他们的质量,不过我最近读到他们的质量差距正在缩小,但我还没有通过测试证实这一点。我已经测试了足够多的编码器,知道了如果你要运行自己的测试,你不应该简单地比较高级峰值信噪比(PSNR)、视频多方法评估融合(VMAF)或SSIMPLUS分数,而是还要检查测试文件中的瞬态质量问题。例如,虽然像Ultrafast和Veryfast更快的x264预设能提供接近于Medium的相同平均PSNR / VMAF的分数,但它们通常包含多个五到十帧的区域,这些区域的质量非常糟糕,会严重降低QoE。
如果所有关于配置的讨论听起来都太复杂,你可以找人帮你做这些事。在这方面,Streaming Media West有多个提供实时转码功能的提供商,包括Bitmovin、Brightcove、Elemental和Wowza。