独家 | 利用Cosmos微服务改善Netflix视频质量
作者: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视频质量相关推荐
- 业界微服务楷模Netflix是这样构建微服务技术架构的
原文: https://mp.weixin.qq.com/s/C8Rdz9wFtrBKfxPRzf0OBQ 作者|杨波编辑|小智Netflix 是美国在线影片租赁商,曾利用超过 100 亿次的用户观 ...
- 利用ogg微服务版将oracle同步到kafka
ogg微服务版可以再界面上配置抽取.复制进程,不必进入到shell中进行配置,并且图形化界面可以看到更多信息. 系统架构 源端安装ogg for oracle 19C , 目标端安装ogg for b ...
- Netflix视频质量感知评价模型之路
尽管主观评定被认为是最佳的视频质量评价方式,但对于每天新增海量视频的平台而言,采用人工方式评定是不现实的.Netflix实践出自己的画质评价模型--VMAF.本文详细阐述了VMAF的实现与演进,Liv ...
- Netflix:用神经网络改善视频质量
点击上方"LiveVideoStack"关注我们 ▲扫描图中二维码或点击阅读原文▲了解音视频技术大会更多信息 编者按 Editor's note 眼看用户视频的增长将超过服务器的 ...
- 深度好文:Netflix奈飞微服务架构设计解析
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:22j.co/dz54 1 概述 数年来,Netflix 一直是全球 ...
- 全面解析 Netflix 的微服务架构设计
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 1简介 多年来,Netflix 一直是全球最出色的在线订阅制视频流 ...
- Netflix如何在上万台机器中管理微服务?(史上最全)
疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : <N ...
- 全面解析Netflix的微服务架构设计
作者 | Cao Duc Nguyen 策划 | 万佳 本文描绘了 Netflix 流媒体服务的整体云架构图景,并从可用性.延迟.可扩展性和对网络系统或系统中断的适应性方面分析了系统的设计. 1 简介 ...
- Linux(Nginx)+Java SpringBoot视频微服务搭建
最近收到一个需求,需要把视频集成为一个服务,视频播放时根据登录的用户名动态生成水印覆盖在视频上: 这些视频隔段时间会来一波,需要集成进去: 最初的解决方案:把视频当作静态资源放在Java Spring ...
最新文章
- 2022-2028年中国消防车行业市场前瞻与投资战略规划分析报告
- ZLAN串口转接以太网ZLSN3003S
- 如何实现一个可复用的分布式事务消息架构方案?
- npm包实现发布正式和测试版
- 简单两个命令快速使用Xshell从Linux服务器上下载上传文件
- apache日志记录格式LogFormat参数说明
- C语言面试题之华为篇2(答案全)
- MDK升级后的头文件冲突
- 要配置php环境_只需修改,要配置Apache的PHP环境,只需修改()。
- 实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?
- JS中的数组排序函数sort()
- 使用CSS来美化你的javafx滚动条
- intellij 上导入外部包教程
- 三十二个vbs整蛊代码,好玩到没朋友
- Android 的singleTask和singleInstance的一点思考
- 转:adb连接手机进行调试有两种方式
- coverity代码检测工具介绍_Coverity功能介绍
- Ansys 错误记录
- 【个人学习文章收集】
- Androidg 改变CheckBox下的选中与未选中图片
热门文章
- 沃尔玛开设智慧零售实验室,正面硬刚 Amazon Go
- EXCEL 电子表格MID 返回值 不能用于计算的问题
- 搜狗输入法电脑版SougouPhoneService占用adb进程的问题
- nginx三大功能(之二负载均衡)
- Metadata Lock原理2
- nginx的权限问题(Permission denied)解决办法
- mysql rand()产生随机整数范围及方法
- 2.6内核中被废弃的pci_present()
- 为DropDownList 添加optgroup分组以及为ListItem 加式样
- python获取文件路径