作者:Christos G.Bampis,陈超,Anush K.Moorhy,李志翻译:陈之炎校对:赵茹萱本文约2800字,建议阅读6分钟
本文解释了如何在Cosmos平台上设计微服务和工作流,以推进视频质量的创新和优化。

简介

视频质量度量是Netflix流媒体管道的一个重要组成部分。视频质量度量可用于实现视频编码优化、执行视频编解码器比较、执行A/B测试和优化流媒体QoE决策。更为特别的是,VMAF指标是提高Netflix流媒体视频质量的核心,业已成为了Netflix视频质量度量的默认标准,由于它是开源的,同时也成为了整个视频行业的默认标准。

随着VMAF的发展,它已经与Netflix中越来越多的编码和流媒体工作流集成到一起,通过可扩展的方式来促进视频质量的创新和优化。例如,当设计一个新版本的VMAF时,需要在整个Netflix的电影和电视节目目录中推出它。本文解释了如何在Cosmos平台上设计微服务和工作流,以推进视频质量的创新和优化。

耦合问题

当前,视频质量度量已经成为了Reloaded系统的一个部分重要组成部分。Reloaded系统负责处理导入的媒体文件,如视频、音频和字幕等等,并使其可在流媒体服务上播放。Reloaded系统是一个成熟和可扩展的系统,然而,其整体架构使得创新的速度得以减缓。更为重要的是,在Reloaded系统中,视频质量度量与视频编码同时生成。这种紧耦合意味着:如果不进行重新编码,便不可能实现以下目标:

A) 推出新的视频质量算法;

B) 维护目录中数据的质量(如:通过BUG 修复)。

为了提高视频质量而对目录中的所有媒体文件重新编码,这是一个成本昂贵的解决方案,因此行不通。这种紧耦合问题在Reloaded系统的体系结构中随处可见,为此媒体云工程和编码技术团队一直在合作开发一个新的解决方案,以解决先前Reloaded系统体系结构中的许多问题,称这个新的重新加载系统为Cosmos。

Cosmos是一个工作流驱动的、以媒体为中心的微服务计算平台。正如博客中所强调的那样,Cosmos有如下诸多好处:如各问题之间相互分离、独立部署、可观察性、快速的原型化和快速的量产化。在本文中,描述了如何利用Cosmos构建视频质量服务,以及如何在运行生产系统时,实现将媒体文件迁移到Cosmos,以便在运行生产系统时实现视频质量的计算。

将视频质量计算视为一种服务

在Cosmos中,视频质量计算由一个名为视频质量服务(VQS)的独立微服务来执行。VQS的输入为两个视频:一个源视频及一个衍生视频,并返回衍生视频质量的度量值。测量到的视频质量度量值可以是一个单一的输出值(例如,VMAF);在明确要求计算的情况下(例如,VMAF和SSIM),也可以返回多个感知视频质量的得分值。

和大多数Cosmos服务一样,VQS由三个特定域和未知规模大小的层组成。每一层都构建在规模大小已知的Cosmos子系统之上,包括一个外部的API层(Optimus)、一个基于规则的视频质量工作流层(Plato)和一个无服务器的计算层(Stratum)。层间的内部通信基于内部开发和维护的Timestone排队系统。下图显示了括号中的每一层和对应的Cosmos子系统。

1. VQS 的API层包括:一个质量测量请求(measureQuality)函数和一个用于异步获取质量结果(getQuality)函数。

2. VQS工作流层由决定如何测量视频质量的规则组成。与基于chunk的编码类似,VQS工作流包括基于chunk的视频质量计算,后面跟随一个组装步骤,这种架构可以增加吞吐量、减少延迟。基于chunk的质量计算可以计算出每个chunk的质量,后续的组装步骤将所有chunk的质量计算的结果组合到一起。例如,如果有两个chunk,一个chunk包含2帧数据,VMAF分数分别为[50,60];一个chunk包含3帧数据,VMAF分数分别 [80,70,90],组装步骤将两个chunk的VMAF分数合并为[50,60,80,70,90]。在 Stratum 中chunking规则为视频中的所有chunk均调用质量计算函数,组装规则调用相应的组装函数。

3. VQS的Stratum层由两个函数组成,分别执行基于chunk的质量计算和组装。

深入研究VQS的工作流

下图是观测到的轨迹图,从图中可以看出 VQS的工作原理。该请求给出了要计算其质量的源视频及其衍生视频,并请求VQS给出 VMAF、PSNR和SSIM等质量指标的得分数。

下面对整个过程逐步进行描述:

1. 使用measureQuality端点调用VQS,VQS API层将外部请求转换为VQS特定的数据模型。

2. 启动工作流。根据视频长度、吞吐量和延迟需求及可用规模大小等因素,VQS工作流将质量计算分成两个chunk,为此,它创建两个消息(每个chunk一个消息),由基于chunk的质量计算层函数独立执行,为每个chunk计算出各自的三个质量指标。

3. 开始为每个chunk进行质量计算。图中并没有单独显示chunk的开始时间,但是,每个chunk的质量计算都是在资源可用的基础上独立地开始和完成(注释为3a和3b)。

3b.在所有chunk质量计算完成之后,Plato启动组装。

4. 开始组装,对各质量指标分别调用装配层函数。与先前一样,各质量指标装配的起始时间可能会有所不同。这种分离式的计算允许部分计算失败,提前返回参数,可根据质量指标复杂度独立扩展。

4a & 4b.其中两个指标(例如PSNR和SSIM)组装完成。

4c & 5..VMAF组装完成,整个工作流也因此结束。可以通过getQuality端点将质量指标值提供给调用者。

以上是工作流程的简要说明,然而,在实际项目中,设计相当灵活,可以支持大量的附加特征,如不同的质量度量、自适应分块策略、以不同的时间粒度(帧级、段级和聚合)生成质量,以及测量不同用例的质量等等,此外还可以测量不同设备类型(如电话)、SDR、HDR等的质量。

过双重生活

虽然VQS是一个致力于视频质量微服务,可以解决上述视频编码的耦合问题,但还有另一个问题函待解决。整个Reloaded系统目前正在向Cosmos迁移。这是一个浩大的工程,需要跨团队的努力,某些应用程序尚在重新加载的过程中,而有一些应用程序已经迁移到了Cosmos当中。如何利用VQS,对某些应用程序的视频质量度量重新加载?换句话说,即如何在这两个不同的世界上管理好生活?

两个世界之间的桥梁

为了过好双重生活,我们开发了几个“桥接”的工作流,利用“桥接”的工作流,可以将视频质量的流量重新加载到Cosmos当中。各个工作流还可以充当将数据模型重新加载成Cosmos服务数据模型的转换器。与此同时,Cosmos工作流可以直接与VQS集成,无需桥接,这样一来,不仅可以在这两个世界中运行,提供视频质量度量功能,而且还可以在现有基础上推出新功能(既可以为Reloaded客户提供应用程序,又可以为Cosmos客户提供应用程序)。

将数据转换视为一种服务

要完成设计要求,还必须解决最后一道难题。虽然有办法调用VQS,但VQS输出的设计应避免Reloaded的集中式数据建模方式。例如,VQS依赖于Netflix媒体数据库(NMDB)来存储和索引质量分数,而Reloaded系统则是将不可查询的数据模型和文件混用。为了更加有助于数据迁移,引入了另一种Cosmos微服务:文档转换服务(DCS)。DCS负责实现Cosmos数据模型和Reloaded数据模型之间的转换。此外,DCS还有NMDB接口,能够实现存储的数据与基于Reloaded文件的数据之间的双向转换。此外,DCS还有其它几个端点,在需要的时候执行类似的数据转换,利用上述端点,使得数据转换可以像罗马骑术一般优雅地实现。

目前项目进展及下一步工作

目前,我们几乎将所有的视频质量计算从Reloaded迁移到了Cosmos当中,VQS代表了Cosmos平台的最大工作载荷。视频质量度量在Cosmos平台业已成熟,下一步将致力于使VQS更加灵活和高效。除支持现有的视频质量功能外,今后所有新的视频质量功能都将从VQS中开发出来。请继续关注更多这些创新算法的细节。

鸣谢

这项工作得到Netflix公司诸多同事的大力协助。感谢George Ye 和Sujana Sooreddy 实现了Reloaded-Cosmos桥的开发,Ameya Vasani 和Frank San Miguel 对VQS规模提升的贡献,以及Susie Xia对性能分析的帮助。此外,衷心感谢:媒体内容回放团队、媒体计算/存储基础设施团队和整个Cosmos平台团队,是他们让Cosmos复活,并全心全意地支持我们进入Cosmos探险。

原文标题:

Netflix Video Quality at Scale with Cosmos Microservices

原文链接:

https://netflixtechblog.com/netflix-video-quality-at-scale-with-cosmos-microservices-552be631c113?source=collection_home

编辑:于腾凯

校对:杨学俊

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | 利用Cosmos微服务改善Netflix视频质量相关推荐

  1. 业界微服务楷模Netflix是这样构建微服务技术架构的

    原文:  https://mp.weixin.qq.com/s/C8Rdz9wFtrBKfxPRzf0OBQ 作者|杨波编辑|小智Netflix 是美国在线影片租赁商,曾利用超过 100 亿次的用户观 ...

  2. 利用ogg微服务版将oracle同步到kafka

    ogg微服务版可以再界面上配置抽取.复制进程,不必进入到shell中进行配置,并且图形化界面可以看到更多信息. 系统架构 源端安装ogg for oracle 19C , 目标端安装ogg for b ...

  3. Netflix视频质量感知评价模型之路

    尽管主观评定被认为是最佳的视频质量评价方式,但对于每天新增海量视频的平台而言,采用人工方式评定是不现实的.Netflix实践出自己的画质评价模型--VMAF.本文详细阐述了VMAF的实现与演进,Liv ...

  4. Netflix:用神经网络改善视频质量

     点击上方"LiveVideoStack"关注我们 ▲扫描图中二维码或点击阅读原文▲了解音视频技术大会更多信息 编者按 Editor's note 眼看用户视频的增长将超过服务器的 ...

  5. 深度好文:Netflix奈飞微服务架构设计解析

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:22j.co/dz54 1 概述 数年来,Netflix 一直是全球 ...

  6. 全面解析 Netflix 的微服务架构设计

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 1简介 多年来,Netflix 一直是全球最出色的在线订阅制视频流 ...

  7. Netflix如何在上万台机器中管理微服务?(史上最全)

    疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : <N ...

  8. 全面解析Netflix的微服务架构设计

    作者 | Cao Duc Nguyen 策划 | 万佳 本文描绘了 Netflix 流媒体服务的整体云架构图景,并从可用性.延迟.可扩展性和对网络系统或系统中断的适应性方面分析了系统的设计. 1 简介 ...

  9. Linux(Nginx)+Java SpringBoot视频微服务搭建

    最近收到一个需求,需要把视频集成为一个服务,视频播放时根据登录的用户名动态生成水印覆盖在视频上: 这些视频隔段时间会来一波,需要集成进去: 最初的解决方案:把视频当作静态资源放在Java Spring ...

最新文章

  1. 2022-2028年中国消防车行业市场前瞻与投资战略规划分析报告
  2. ZLAN串口转接以太网ZLSN3003S
  3. 如何实现一个可复用的分布式事务消息架构方案?
  4. npm包实现发布正式和测试版
  5. 简单两个命令快速使用Xshell从Linux服务器上下载上传文件
  6. apache日志记录格式LogFormat参数说明
  7. C语言面试题之华为篇2(答案全)
  8. MDK升级后的头文件冲突
  9. 要配置php环境_只需修改,要配置Apache的PHP环境,只需修改()。
  10. 实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?
  11. JS中的数组排序函数sort()
  12. 使用CSS来美化你的javafx滚动条
  13. intellij 上导入外部包教程
  14. 三十二个vbs整蛊代码,好玩到没朋友
  15. Android 的singleTask和singleInstance的一点思考
  16. 转:adb连接手机进行调试有两种方式
  17. coverity代码检测工具介绍_Coverity功能介绍
  18. Ansys 错误记录
  19. 【个人学习文章收集】
  20. Androidg 改变CheckBox下的选中与未选中图片

热门文章

  1. 沃尔玛开设智慧零售实验室,正面硬刚 Amazon Go
  2. EXCEL 电子表格MID 返回值 不能用于计算的问题
  3. 搜狗输入法电脑版SougouPhoneService占用adb进程的问题
  4. nginx三大功能(之二负载均衡)
  5. Metadata Lock原理2
  6. nginx的权限问题(Permission denied)解决办法
  7. mysql rand()产生随机整数范围及方法
  8. 2.6内核中被废弃的pci_present()
  9. 为DropDownList 添加optgroup分组以及为ListItem 加式样
  10. python获取文件路径