马赛克、模糊、扭曲的面孔和物体……糟糕的图像质量会大幅降低观众通过Netflix观赏喜爱的剧集或电影时的观赏体验。很多情况下,网络带宽不足或数据限流会导致我们无法为观众提供完美画质,为此Netflix视频算法团队一直在努力开发更高效的压缩算法,以便让Netflix能够在使用更少带宽的情况下提供相同甚至更出色的画质。我们还会与Netflix的其他团队合作,更新客户端应用以及流媒体基础架构,为新的视频流播技术提供支持,确保用户可以在任何设备上通过Netflix获得无缝播放体验。
为了进一步改善画质,我们早已于2015年开发并部署了Per-title编码优化技术(译注:该技术可针对每段视频的具体特征应用最优化的编码参数),并在一年后应用了针对移动设备视频下载进行优化的编码技术。在那之后,我们的目标是开发一种基于视频中每个分镜(Shot)进行编码的框架,该框架名为动态优化器(Dynamic Optimizer),借此可对视频流中的内容进行更细致的优化。本文将介绍为了在生产环境中运用该技术,我们所面临的挑战以及应对措施,以及这些技术对视频画质的改善情况。
在生产环境中实现动态优化技术
图1:分镜通过合并序列组成的“块”。(A) 代表整个视频的时间轴,竖直虚线代表两个分镜的边界。(B) 一个分镜成为一个块:将每个分镜分配为一个块。(C) 将多个分镜合并为一个块:在一个目标块的时长内累积整数个分镜。
在一个合并序列中,我们会将多个分镜整理到一起,这样一系列连续分镜就可以组成一个块。随后,考虑到我们已经可以灵活地决定这种合并序列的组成方式,因此可将整数个分镜组合起来,形成时长大约为3分钟的块,这样的结果与最初所用的基于视频块的编码模式就较为类似了(图1,C)。通过配置,这些块可维持近似相同的大小,这样在由原本针对数分钟长的视频块进行编码而提供的计算实例进行处理时,可简化资源的分配工作。在每个块中,计算实例可独立对其中的分镜进行编码,并分别应用预先定义好的编码参数。
图2:检查点
通过合并序列,对每个视频块中包含的分镜单独编码,还为系统带来了额外的好处,我们将其称之为检查点。以前,如果丢失一个计算实例(因为这些实例可能是借来的,但突然需要使用这些实例处理优先级更高的任务),随后就需要重新编码整个块。但在基于分镜的系统中,每个分镜都是单独编码的。一旦某个分镜编码完成,如果在对块中其他分镜进行编码的过程中实例丢失,已完成编码的分镜将无需重新编码。我们创建了这样的检查点系统(图2),借此确保分镜及其元数据可在编码完成后立即存储起来。通过这种方式,如果需要在另一个计算实例上重新处理同一个块,并不需要从头开始重新编码,只要从上次停止的地方开始处理即可,这样可以节约大量运算资源。
压缩性能
图3:每视频、每块以及优化后的全新编码方式的压缩效果
一起看看质量相等的情况下,码率的降低幅度,为此可以在VMAF=80(质量良好)处画一条横线,随后可以获得下列码率信息:
从中可见,相比AVCMain所代表的每视频编码方式,优化后的编码器只需要不到一半的码率即可实现相等质量。对于VP9-Opt,只需要相比AVCMain不足1/3的码率即可实现相同质量的流播。而如果使用AVCHi-Mobile和VP9-Mobile,分别也可以节约17%和30%的带宽。
我们还研究了带宽相同情况下视觉质量受到的影响。例如,手机蜂窝网络的带宽平均为250 kbps,这样的带宽可以获得下表所示的VMAF分数。相比AVCMain,优化后的编码器可以显著提升视频质量。
为了展现视频质量的差异,下文列举了主厨的餐桌(Chef’s Table)剧集中的一帧画面,不同图片为250 kbps左右码率下不同编码方式产生的视频截图。对比发现画面中的材质(砖块、树木、岩石、水面等)质量有了可观的提升。其中AVCMain(图4A,VMAF=58)和AVCHi-Opt(图4B,VMAF=73)的视觉差异最显著,VP9-Opt(图4C,VMAF=79)看起来最锐利。
图4 (A):AVCMain,250 kbps,VMAF=58
图4 (B):AVCHi-Opt,254 kbps,VMAF=73
图4 (C):VP9-Opt,248 kbps,VMAF=79
下文我们将以十三个原因(13 Reasons Why)剧集开场的一幕作为例子,展示码率同为250 kbps左右时的效果。使用AVCMain(图5A)时,图片上方的文字几乎不可辨认,而此时的VMAF得分为60分;使用AVCHi-Opt(图5B)时,画质已有较大改善,此时VMAF得分为74;使用VP9-Opt(图5C)时,文字和形状边缘变得非常清晰,同时画质有了显著提升,此时的VMAF得分为81。
图5:(A) AVCMain,260 kbps,VMAF=60;(B) AVCHi-Opt,257 kbps,VMAF=74;(C) VP9-Opt,252 kbps,VMAF=81
优化编码器的现场测试
重编码与设备支持
过去几个月来,我们已经对Netflix的整个视频库生成了AVCHi-Opt编码的内容,并开始将其用于很多平台的流播。现在,当用户通过iOS、Android、PS4以及Xbox One观看Netflix内容时,就已经在享受这项技术带来的好处。另外针对一些非常受欢迎的内容,我们也已提供了VP9-Opt流播,目前部分Android设备已经可以支持这个技术。同时我们也在积极针对其他设备和浏览器对这种新的流播方式进行测试。
无论你正在智能电视上通过最快速度的宽带连接观赏“主厨的餐桌”,或在移动设备上通过不稳定的蜂窝网络观看“杰西卡·琼斯”,Netflix都在致力于提供尽可能一流的观看体验。而此次发布的优化编码技术也很好地证明了将创新的研究成果,积极有效的跨团队合作,以及数据驱动的部署方式配合使用后,确实能为我们的用户提供更卓越的观影体验。