马赛克、模糊、扭曲的面孔和物体……糟糕的图像质量会大幅降低观众通过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都在致力于提供尽可能一流的观看体验。而此次发布的优化编码技术也很好地证明了将创新的研究成果,积极有效的跨团队合作,以及数据驱动的部署方式配合使用后,确实能为我们的用户提供更卓越的观影体验。

公众号推荐:

公众号:VOA英语每日一听

微信号: voahk01

可长按扫码关注,谢谢

Netflix最新视频优化实践:用更少的带宽打造完美画质相关推荐

  1. CSS代码缩写,占用更少的带宽/字体缩写/盒模型代码简写/颜色值缩写

    1盒模型代码简写 还记得在讲盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左.具体应用在margin和paddi ...

  2. 美拍短视频成本减半及毫秒起播优化实践

    本文是来自美图的黄及峰(阿不)在 GIAC 2018 深圳站分享的美拍短视频优化实践的演讲精华内容. 作者将从成本优化,成功率优化,播放体验优化等几个方面,整体介绍下美拍短视频成本减半以及毫秒起播优化 ...

  3. 新浪微博短视频服务的优化实践

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...

  4. 腾讯信息流亿级相似视频识别技术架构优化实践

    前言:本文转载自InfoQ,原链接如下.本人为作者之一. InfoQ官网文章 InfoQ微信公众号文章 腾讯信息流亿级别相似视频识别技术架构优化实践 作者:邹建勋,袁易之,常郅博 1.信息流业务背景介 ...

  5. 微博短视频服务优化实践

    本文来自新浪微博视频转码平台技术负责人李成亚在LiveVideoStackCon 2017上的分享,由LiveVideoStack整理成文.李成亚分享了微博短视频如何提升用户体验.降低成本的思路与实践 ...

  6. 【案例】新浪微博短视频服务的优化实践

    本文将分享新浪微博短视频如何提升用户体验.降低成本的思路与实践,包括提升短视频发布速度,降低长视频转码时间,通过新的 Codec 减少带宽成本等. 作者:李成亚来源:新浪微博|2018-08-06 1 ...

  7. 海外弱网下的在线视频平台优化实践​

    正文字数:10745  阅读时长:16分钟 在弱网下,视频启动时间和播放卡顿都会增加.为提升弱网用户体验,需要识别出主要问题再针对性调优.本演讲将结合四达时代在非洲建设"StarTimesO ...

  8. YY视频直播体验优化实践

    YY音视频算法中心负责人林绪虹在LiveVideoStackCon 2018音视频技术大会的演讲中介绍了YY如何实现全平台差异化直播能力,以及视频画质.流畅度.音视频同步.弱网条件下开播,连麦质量等直 ...

  9. 华为开发者大会主题演讲:抖音短视频网络性能优化实践

    内容来源:华为开发者大会2021 HMS Core 6 System技术论坛,主题演讲<抖音短视频网络性能优化实践>. 演讲嘉宾:卡涛,抖音Android架构师 大家好!我是来自字节跳动抖 ...

  10. 许键树:华为云视频直播在各细分场景的体验指标优化实践

    点击上方"LiveVideoStack"关注我们 本文来自华为云媒体服务直播产品经理 许键树在LiveVideoStack公开课的分享,结合华为云在直播领域的实践经验,详细解析如何 ...

最新文章

  1. 使用maven构建Spring工程的一些重点
  2. 【 Vivado 】在工程模式下通过jou文件来学习 Tcl 命令
  3. python接口自动化 一个变量 其他接口要用_python接口自动化测试之接口数据依赖的实现方法...
  4. 多个python文件相互调用_用 python提取两个文件之间的内容
  5. 关于问题 SAP ABAP ME2O 事物码如何(是否可以)打印发货单?如何自己找到答案
  6. 靠一平台构建核心指标系统,数据分析让业务运营效率提升90%
  7. [转]把复杂事物简明化
  8. PAT A1057 分块思想
  9. win10安装git,打开git bash闪退
  10. mac 查看进程及杀进程
  11. HDU 6030(矩阵快速幂+规律)
  12. 【Spring-AOP】自动代理类AnnotationAwareAspectJAutoProxyCreator
  13. SAP ABAP 从入门至精通书籍推荐
  14. Linux 脚本 —— 统计目录中文件的数量(按文件名分类)
  15. 用Matlab绘制正方形圆形椭圆
  16. pc端ui图片尺寸_PC端UI设计尺寸规范?
  17. Tomcat8安装后tomcat8w.exe点击出现“指定的服务未安装”解决方案
  18. 计算机英语第五版翻译,计算机专业英语教程第5版翻译
  19. C语言编写SSH终端
  20. 辛巴学院-Unity-剑英的c#提高篇(一)主循环

热门文章

  1. 毕业设计的一些小总结
  2. Python爬取网页数据
  3. 服务器被恶意攻击可以报警吗?
  4. PAT.1143 Lowest Common Ancestor
  5. 范畴论[转自百度百科]
  6. oracle18c创建数据库,Oracle 18C 手工创建CDB
  7. 内存分配 与 const
  8. Kernel中bluetooth相关的config选项
  9. 促使网站快速收录的一些方法,超详细
  10. 随机过程基础1--随机过程与宽平稳