Netflix:我们是如何评估Codec性能的?

简介: Netflix会定期评估现有和即将推出的视频编解码器,不断优化视频编码技术以提供更高质量的服务。本文介绍了视频编码器性能评估中的几项重要元素以及如何从传统与自适应流媒体两种视角进行编解码器性能对比。本文来自Netflix技术博客,LiveVideoStack进行了翻译。

文 / Joel Sole,Liwei Guo,Andrey Norkin,Mariana Afonso,Kyle Swanson,Anne Aaron


译 / 许海燕


审校 / Yunfei


原文: https://medium.com/netflix-techblog/performance-comparison-of-video-coding-standards-an-adaptive-streaming-perspective-d45d0183ca95


“这是我对人们的建议:学习如何烹饪,尝试新的食谱,从错误中吸取教训,无所畏惧,最重要的是享受乐趣”  - Julia Child(美国厨师,作家和电视名人)


在Netflix,我们不断改进配方,以尽可能高的质量为您喜爱的节目和电影提供服务。这道菜中的一个基本元素是视频编码技术,我们用它将视频内容转换为压缩比特流(适用于您正好在Netflix上使用的任何带宽)。视频编码界已经做了大量的工作来开发视频编码标准(编解码器),目标是实现更好的压缩比。因此,一项基本任务是评估我们使用的材料的质量,在Netflix编码厨房中,我们通过定期评估现有和即将推出的视频编解码器和编码器的性能来实现这一目标。我们选择最新鲜和最好的编码技术来调味我们的视频内容, 以满足从《Salt, Fat, Acid, Heat》这样的纪录片到Chef’s Table中美味的食物片段的要求。

image.png厨师的桌子

编解码器对比中的因素


在已发表的许多比较视频编解码器性能的文章中。这些文章的读者可能经常被它们看似矛盾的结论弄糊涂。一篇文章可能声称编解码器A比编解码器B好15%,而下一篇文章可能断言编解码器B比编解码器A好10%。


image.png

如果深入研究这个话题就会发现,这些明显的矛盾是可以预料到的。为什么?因为测试方法和内容在视频编解码器的评估中起着至关重要的作用。选择不同的测试条件可能导致不同的结果。接下来我们将讨论影响视频编解码器评估的几个因素:


1. 编码器的实现


2. 编码器的设置


3. 方法


4. 内容


5. 度量


在适用的情况下,我们对传统的比较方法和自适应流媒体的方法进行了区分。

编码器的实现


视频编码标准有软件和硬件的实现,基于不同的目的,比如研究领域、广播、或者流媒体。 “参考编码器”是在视频标准化过程和研究期间使用的软件实现,并且作为实现者的参考软件。通常,这是标准的第一个实现,一般不用于产品。之后,由开源社区或商业实体开发的产品编码器出现。这些是大多数公司为其编码需求和应用中的速度和资源的限制而部署的实际实现。因此,参考和产品编码器的性能会大不相同。此外,标准配置文件和特定版本会影响观测到的性能,特别是对于新标准的还不怎么成熟的实现。Netflix部署了在流媒体应用中以获得最高主观质量的产品编码器。

编码设置


编码参数,例如编码的次数,并行化工具,码率控制,主观质量调节等,在结果中引入了高度的可变性。这些编码设置的选择主要是由应用背景而决定的。


标准化机构倾向于使用测试条件,让他们将一种工具与另一种工具进行比较,通常最大化特定的客观指标并减少不同实验的可变性。例如,通常禁用码率控制和主观质量调节,以专注于核心编码工具的有效性。


Netflix编码配方专注于实现最佳质量,支持可用的编码器工具,增强主观质量,从而减少编码速度或编码器占用内存空间等指标的权重,尽管这些指标在其他应用中至关重要。

方法


编解码器标准化中的测试方法建立了明确定义的“通用测试条件”,以评估新的编码工具并允许实验的可重复性。常见的测试条件包括一组相对较小的测试序列(1到10秒的单次拍摄),这些测试序列仅在输入分辨率下使用一组固定的质量参数进行编码。针对这些质量点中的每一个收集的质量(PSNR)和比特率,并用于计算平均比特率节省,即所谓的BD率,如下图所示。

image.png

虽然标准中的方法已经适用于其预期目的,但在自适应流媒体界中还需要考虑其他因素。值得注意的是,可以选择以不同的比特率和分辨率提供相同视频的多个版本,以匹配网络带宽和客户端处理和显示功能。内容,编码和显示分辨率不一定捆绑在一起。去掉这个约束意味着可以通过以不同分辨率进行编码来优化质量。

image.png

每个分辨率码率 - 质量曲线交叉,因此每个编码分辨率都有一系列码率可以提供最佳质量。通过在整个范围内选择每个码率点的最佳曲线来导出“凸包”。然后,在凸包上计算BD-rate差,而不是使用单分辨率曲线。

image.png

与单一分辨率相比,这种考虑多分辨率的灵活性带来了非常显著质量提高。动态优化器(DO)方法将此概念推广到具有多个场景的序列。DO对视频中所有场景的凸包进行操作,通过寻找质量,分辨率和场景编码的最佳压缩路径,共同优化整体码率 - 失真。


DO是在这个技术博客(https://medium.com/netflix-techblog/dynamic-optimizer-a-perceptual-video-encoding-optimization-framework-e19f1e3a277f)中介绍的。结果显示多场景视频可以节省25%的BD-rate。使DO特别适用于自适应流和编解码器比较的三个特征是:


1. 它与编解码器无关,因为它可以以相同的方式应用于任何编码器。


2. 它可以使用任何指标来指导其优化过程。


3. 它消除了对编码器中各种场景之间的高级码率控制的需要。较低级别的码率控制,如帧内的自适应量化,是仍然有用的,因为DO不会低于场景级别。


DO,如最初提出的,是一种非实时的,计算代价高昂的算法。然而,由于穷举搜索,DO可被视为高层码率控制算法的性能上限。

内容


为了公平比较,测试内容应该要平衡,涵盖各种不同类型的视频(普通视频与动画片,平缓运动和复杂运动等)或者反映当前应用的内容。


在编解码器的开发过程中不应使用测试内容。Netflix制作并公开了多场景长视频序列,例如“El Fuente”或“Chimera”,以扩展可用于研发的视频,并缓解将训练和测试内容混淆的问题。在内部,我们使用目录中的完整标题广泛地评估算法。

度量


传统上,PSNR因其简单而成为一个度量标准的选择,并且它与主观意见得分相当匹配。其他指标,如VIF或SSIM,与主观得分有更好的相关联。度量通常是根据编码分辨率计算的。


Netflix 在整个视频生产线中高度依赖VMAF。VMAF是一种感知视频质量度量标准,用于模拟人类视觉系统。在广泛的质量范围和内容上,它与主观意见的相关性比PSNR更好。VMAF可在自适应流传输中的各种比特率和分辨率上实现可靠的编解码器比较。此技术博客(https://medium.com/netflix-techblog/vmaf-the-journey-continues-44b51ee9ed12)有助于了解更多有关VMAF及其当前部署状态的信息。

image.png

VMAF值与主观意见之间的近似对应关系


使用度量标准时的两个相关方面是计算它们的分辨率和时间平均值:


1. 缩放度量:VMAF不是以编码分辨率计算的,而是以显示分辨率计算的,这更好地模拟了我们的用户观看体验。这并不是VMAF所独有的,因为PSNR和其他指标可以通过适当缩放视频应用于任何需要的分辨率。


2. 时间平均:度量是基于每帧计算的。通常,算术平均值是获得整个序列的时间平均值的一种选择方法。我们使用调和平均值,它给异常值提供了比算术平均值更多的权重。使用调和平均值的原因是,如果在你正在观看的节目的镜头中有很少的帧看起来很糟糕,那么不管剩下的镜头质量有多好,你的体验都不会那么好。调和VMAF的首字母缩写词是HVMAF。

编解码器比较结果


将上述因素应用到实际中,我们给出了两种不同的编解码器比较方法的结果,一种是传统的,另一种是自适应流媒体的。


测试了三种常用的视频编码标准:ITU.T和ISO / MPEG的H.264 / AVC和H.265 / HEVC以及Google的VP9。对于每个标准,我们使用参考编码器和产品编码器。


采用传统方法的结果


传统方法对一组短序列使用固定QP(质量)编码。

image.png

编码器设置如下表所示。


• 方法:生成内容分辨率下每个序列的五个固定质量编码。


• 内容:来自MPEG通用测试条件集(主要来自JVET)的14条标准序列和来自开放媒体联盟(AOM)的14条标准序列。所有序列都是1080p。这些是短片段:MPEG集约10秒,AOM集约1秒。大多数情况下,它们是单场景序列。


• 度量标准:使用经典的PSNR为亮度分量计算BD-rate节省。


结果总结在下表中。BD-rate是相对于x264的百分比给出的。正数表示比特率的平均增加,而负数表示比特率减少。

image.png

使用6个PSNR调谐视频编码器的PSNR的BD-rate(%)


有趣的是,并没有看到使用MPEG集会有利于HEVC编码器,或使用AOM集会有利于VP9编码器。


自适应流媒体视角的结果


本节介绍一个更全面的实验。它建立在传统方法之上,修改了每个因素的某些方面:


编码器设置:更改设置以包含感知调整。其余的设置保持原先的定义。

image.png

方法:每个场景都以10种不同的分辨率进行编码,从1920x1080到256x144。DO使用HVMAF进行整体编码优化。


内容:Netflix的8部完整剧集(如Orange is the New Black、House of Cards或Bojack)被添加到另外两个测试集中。Netflix的这些剧集是1080p,30fps,8位/分量。在大约8小时的视频里面,它们包含了很多类型的内容。


度量:HVMAF用于评估这些感知调整的编码。该度量是在凸包的相关质量范围内计算的。HVMAF是在将编码缩放到显示分辨率(假设为1080p)后计算的,该分辨率也与源内容的分辨率匹配。


此外,我们将结果分成两个范围,以可视化不同质量的性能。低范围是指30到63之间的HVMAF,而高范围是指63到96之间的HVMAF,这与高主观质量相关。


HVMAF BD-rates表中高亮显示的行是Netflix最相关的操作点。

image.png

BD-rate(以%为单位)使用6个视频编码器的HVMAF调整感知质量。BD-rates百分比使用x264作为参考。

要点


编码器,编码设置,方法,测试内容和度量应在任何编解码器比较中进行详细描述,因为它们会极大地影响结果。如上所述,对测试条件的不同选择导致对编码器的相对性能的不同结论。


考虑到Netflix等服务压缩和提供的大量视频,传统和自适应流媒体方法不一定会收敛到相同的结果,如果视频编码社区在比较中考虑自适应流媒体的应用,这将是有益的。例如,在凸包上计算度量或将HVMAF数添加到报告的度量中相对容易。


就像伟大的食谱一样,视频编码也有核心的元素; VMAF,动态优化和出色的编解码器。凭借这些材料和不断创新,我们正在努力完善我们的配方 - 以尽可能低的比特率进行高质量的视频编码。

————————————————

版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/85814638


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云视频云@凡科快图.png

相关文章
|
2月前
|
自然语言处理
评估数据集CGoDial问题之UniMSE框架将MSA和ERC统一的问题如何解决
评估数据集CGoDial问题之UniMSE框架将MSA和ERC统一的问题如何解决
|
2月前
|
存储 数据处理 数据安全/隐私保护
流计算引擎数据问题之MillWheel/Cloud DataFlow 实现完整性推理如何解决
流计算引擎数据问题之MillWheel/Cloud DataFlow 实现完整性推理如何解决
30 0
|
3月前
|
JSON 安全 fastjson
FastJSON库:JSON处理效率与安全性评估
FastJSON库:JSON处理效率与安全性评估
|
缓存 Java 微服务
OpenFeign的集成与优化
OpenFeign的集成与优化
1951 0
|
缓存 Dubbo 应用服务中间件
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
|
Cloud Native 网络协议 Java
Nacos 2.0 正式发布,性能大幅提升 10 倍!
SpringCloud、SCA,还对接了一些云原生的组件比如 coreDNS 和 sentinel 等。 客户端语言方面目前支持 Java,go python 等主流
Nacos 2.0 正式发布,性能大幅提升 10 倍!
EMQ
|
SQL 存储 运维
HStreamDB Newsletter 2022-08|端到端压缩提升读写性能、HStream Cloud 即将上线
八月主要新增了端到端压缩、CLI支持TLS等功能,并修复了多项已知问题,同时新的Haskell gRPC框架以及云原生的全托管流数据库服务HStream Cloud也正在开发中。
EMQ
142 0
|
运维 监控 负载均衡
Spring Cloud(四)《服务响应性能成功率监控 Hystrix》
Hystrix Dashboard | 断路器仪表盘,Hystrix 依赖服务一段时间窗内的请求调用情况来判断并操作断路器的链接和熔断状态保护系统快速失败服务降级,而这些请求情况的指标信息都是 HystrixCommand 和 HystrixObservableCommand 服务实例在执行过程中记录的重要指标信息,它们除了 Hystrix 断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以 “滚动时间窗” 与 “桶” 结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard 就是这些指标内容的消费者之一。
166 0
Spring Cloud(四)《服务响应性能成功率监控 Hystrix》
|
存储 监控 Java
Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】
Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】
125 0
|
编解码 Rust 算法
性能可期——Netflix与Intel优化SVT-AV1
四月初,英特尔和Netflix宣布联合开发了一款名为SVT-AV1的视频编码器软件。可扩展视频技术(SVT)是英特尔的开源框架,它为可视化云技术的开发人员提供了高性能的视频编码软件库。本文将介绍Netflix迄今为止在SVT-AV1积累的经验,以及如何能让您也能参与到这一开发中来。本文来自Netflix技术博客,LiveVideoStack对原文进行摘译。
778 0
性能可期——Netflix与Intel优化SVT-AV1