继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Netflix视频处理管道的微服务改造之旅

ABOUTYOU
关注TA
已关注
手记 477
粉丝 67
获赞 359

郭磊伟, 安努什·莫orthy, 陈立恒, 维尼西乌斯·卡瓦尔霍, 阿迪蒂亚·马瓦兰卡, 阿加塔·奥帕拉奇, 阿迪蒂亚·普拉卡什, 凯尔·斯万森, 杰西卡·特温博阿, 苏布·文卡特拉, 朱丽珊

这是奈飞系列博客的第一篇,该系列博客将探讨我们如何用微服务重构视频处理管道,以保持快速的创新步伐并不断改进会员的流媒体服务和工作室的运营。这篇入门博客主要是为我们介绍整个历程的概览。后续博客将深入探讨每个服务,并分享在这一过程中我们学到的经验教训。

随着我们在2007年推出流媒体服务,奈飞的视频处理管线正式启动。自此以来,视频管线经历了广泛的扩展和重大的改进。

  • 从标准动态范围(SDR)开始,即标准动态范围,我们扩展了编码管道至4K和高动态范围(HDR),这使我们能够支持我们的高端产品。
  • 我们从集中式的线性编码转向了分布式分块编码架构。这种架构转变极大地减少了处理延迟并增强了系统的弹性。
  • 我们不再使用数量有限的专用实例,而是利用了Netflix内部由于自动伸缩的微服务而创建的内部资源池(内部槽),这显著提高了计算的弹性以及资源利用效率。
  • 我们推出了诸如每部电影每段视频片段优化等编码创新,这些优化显著提升了Netflix会员的用户体验质量(QoE)。
  • 通过与工作室内容系统的集成,我们的管道能够利用创意方面的丰富元数据,创造更多吸引会员的体验,比如互动叙事。
  • 我们扩展了支持管道,以满足我们工作室/内容开发的使用案例,这些使用案例与传统流媒体场景相比,有不同的延迟和弹性需求。

过去十五年的经验强化了我们对高效、灵活的视频处理管道的信念,这样的管道不仅支持我们的创新和流媒体服务,还能帮助我们的工作室合作伙伴,这对Netflix的持续成功至关重要性不言而喻。为此,编码技术(ET)中的视频与图像编码团队在过去几年里一直在我们下一代基于微服务的计算平台“Cosmos”上重建视频处理管道。

《从《Reloaded》到《Cosmos》》
重装

自2014年起,我们就在第三代平台Reloaded(https://www.youtube.com/watch?v=JouA10QJiNc)上开发并运行视频处理流程。Reloaded设计得当,提供了良好的稳定性、可扩展性和灵活性与适应性。它奠定了我们团队开发的众多编码技术创新的基础

在设计Reloaded时,我们专注于单一的使用场景:将来自工作室的高质量媒体文件(通常称为中间层)转换为Netflix流媒体所需的压缩资产。Reloaded被创建为一个单体架构的系统,来自ET媒体团队以及我们的平台合作伙伴团队内容基础设施和解决方案(CIS)¹的开发人员在同一代码库上工作,构建了一个单一系统来处理所有媒体资产。随着时间的推移,该系统扩展以支持各种新的应用场景,这导致了系统的复杂性显著增加,Reloaded的局限性也开始显现出来。

  • 紧密耦合的功能: Reloaded 由多个工作模块和一个编排模块组成。设置一个新的 Reloaded 模块及其与编排模块的集成需要相当多的努力,这导致开发新功能时更倾向于增强现有功能而非创建新功能。例如,在 Reloaded 中,视频质量计算是在视频编码器模块中实现的。因此,如果不重新编码,很难重新计算视频质量。
  • 单体结构: 由于 Reloaded 模块经常位于同一个仓库中,很容易忽视代码隔离规则,并且在本应是强边界的地方出现了意外的代码重用。这种重用导致了紧密耦合并降低了开发速度。模块之间的紧密耦合进一步迫使我们不得不将所有模块一起部署。
  • 长的发布周期: 共同部署意味着对意外的生产中断的担忧增加,因为对于这种规模的部署,调试和回滚可能会很困难。这推动了“发布列车”的方法。每两周,所有模块的“快照”被提取并提升为“候选发布版本”。然后,候选发布版本经过详尽的测试阶段,试图覆盖尽可能多的范围。测试阶段大约需要两周时间。因此,取决于代码变更何时被合并,可能需要两到四周才能进入生产环境。

随着时间的推移和功能的增加,Reloaded 新功能的贡献速度减缓了。由于需要克服架构限制的巨大工作量,几个有前途的想法也被放弃了,这些想法原本被认为很有前景。曾经为我们服务的平台现在却成了开发的负担。

宇宙

作为回应措施,2018年CIS和ET团队开始开发下一代平台Cosmos。除了Reloaded已有的可扩展性和稳定性外,Cosmos旨在大幅增强系统的灵活性并加快功能开发速度。为达到这一目标,Cosmos被开发成一个以工作流为中心、媒体驱动的微服务计算平台。

微服务架构提供了服务之间的强解耦。每个微服务的工作流支持可以减轻实现复杂媒体工作流逻辑的负担。最后,相关的抽象使媒体算法开发人员可以专注于视频和音频信号的处理,而不是基础设施问题的解决。Cosmos提供的全面好处可以在链接的博客文章中找到。

让我们一起来看看如何在Cosmos中搭建视频处理管道
服务界限

在微服务架构中,一个系统由多个细粒服务组成,每个服务都专注于单一功能。因此,首先(也是最重要的一点)是划定界限并定义服务。

在我们的工作流程中,随着媒体素材从创建到导入再到分发的过程中,它们会经历分析和转换等多种处理阶段。我们分析了这些处理阶段以识别“界限”,并将它们分组到不同的领域中,这些分界点进而成为了我们构建的微服务架构中的基本单元。

例如,在《Reloaded》中,视频编码模块包含了五个步骤。

1. 把输入视频切成小段

  1. 将每个数据块单独编码

3. 算出每个片段的质量得分(VMAF,视频多媒体评估分数)

4. 将所有编码片段拼接成一个单一的编码视频

5. 将所有片段的质量得分汇总起来

从系统层面来说,组装的编码视频是主要关注点,而内部的分块和独立编码是为了满足特定的延迟和抗毁性要求。此外,如上所述,视频质量评估与编码服务是完全独立的功能。

在Cosmos中,我们这样做了,创建了两个独立的微服务:视频编码服务(VES)和视频质量服务(VQS),每个服务都有各自独立的功能。在实现细节中,分块编码和组装被抽象到VES中。

视频相关服务

如上所述的方法被应用于视频处理管道中的其他部分,以识别功能,从而确定服务边界,从而创建了以下视频服务²(见下文)。

  1. 视频检查服务(VIS):此服务将中转层作为输入并执行各种检查。它从不同层次的中转层中提取元数据供下游服务使用。此外,检查服务会标记无效或意外的元数据,并向上游团队提供可操作的反馈。
  2. 复杂性分析服务(CAS):最优编码配方高度依赖于内容。此服务将中转层作为输入并进行分析以了解内容复杂度。它调用视频编码服务进行预编码,并调用视频质量服务进行质量评估。结果保存到数据库以便重复使用。
  3. 速率梯度生成服务(LGS):此服务创建给定编码族(H.264、AV1 等)的完整比特率梯度。它从 CAS 获取复杂度数据并运行优化算法以创建编码配方。CAS 和 LGS 覆盖了我们在技术博客中以前提出的许多创新(例如,每标题移动编码每镜头优化的 4K 编码 等)。通过将速率梯度生成封装为一个独立的微服务(LGS),我们将梯度优化算法与复杂度数据的创建和管理解耦(这些数据存储在 CAS 中)。我们预计这将增加我们的实验自由度并加快创新步伐。
  4. 视频编码服务(VES):此服务将中转层和编码配方作为输入并生成编码视频。该配方包括所需的编码格式和输出属性,例如分辨率、比特率等。该服务还提供选项以根据使用情况调整延迟、吞吐量等。
  5. 视频验证服务(VVS):此服务将编码视频和关于编码的预期作为输入。这些预期包括编码配方中指定的属性以及编解码器规范中的符合性要求。VVS 分析编码视频并将其结果与指定的预期进行对比。任何不一致都会在响应中被标记以提醒调用者。
  6. 视频质量服务(VQS):此服务将中转层和编码视频作为输入,并计算编码视频的质量分数(VMAF)。
服务编排功能

每个视频服务功能提供了专门的功能,这些功能协同工作以生成所需的视频资产。目前,Netflix 视频管道的两个主要用途是为会员的流媒体服务和工作室的运营生成资产。针对每个用途,我们分别为这两个用途创建了专用的工作流编排器,以便服务编排可以定制以更好地满足相应的业务需求。

对于流媒体用例,生成的视频内容会被部署到我们的内容分发网络(CDN)上,供Netflix会员观看。这些视频可以被观看数百万次。流媒体工作流利用几乎所有的视频服务来创建流以提供给会员完美的观看体验。它利用VIS来检测并拒绝不符合标准或质量低下的中间视频素材,通过LGS优化编码配方,利用VES进行视频编码,并调用VQS进行质量评估,其中质量数据进一步被输入到Netflix的数据管道中进行分析和监控。除了视频服务外,流媒体工作流还使用音频和字幕服务生成音频和文本资产,并利用打包服务将这些资产“打包”以进行流媒体。

对于工作室场景,一些示例视频资产包括营销片段和日常生产的编辑代理视频。工作室方面的请求通常对延迟敏感。例如,制作团队的某人可能在等待视频以便审核,以便他们可以决定第二天的拍摄计划。因此,工作室工作流编排器优化了快速周转,并专注于核心媒体处理任务。此时,它调用 VIS 提取元数据,并用预定义的配方调用 VES。与会员流相比,工作室操作对视频处理有不同的独特要求。因此,工作室工作流编排器是某些编码功能(如防篡改水印和时间码/文本烧入)的专属用户。

现在我们在哪

我们已经有一段时间同时在生产中运行新的视频管道和Reloaded了。在这段时间里,我们完成了从Reloaded迁移所有必要功能的工作,开始逐步将流量按用例切换到新管道,并在2023年9月完成了全部切换。

尽管还处于早期阶段,我们已经看到了新平台的好处,特别是在功能交付方面的便捷性。特别值得一提的是,Netflix 于 2022 年 11 月推出了 广告支持的订阅计划。处理广告素材带来了新的挑战:广告的媒体格式与团队熟悉的电影和电视插播广告截然不同,并且出现了与广告业务需求相关的新一轮媒体处理要求。借助 Cosmos 的模块化和开发人员生产力优势,我们能够快速迭代管道以跟上不断变化的需求并支持广告支持计划的成功发布。

概要

重建视频处理管道对我们团队来说是一项巨大的任务。我们为所取得的成就感到非常自豪,也非常期待与技术社区分享我们的旅程。这篇博客主要概述了以下内容:我们的管道和平台的历史、重建的必要性、新服务的外观和功能,以及它们如何被Netflix业务使用。在下一篇文章中,我们将详细介绍视频编码服务(VES)的细节,逐步解释服务创建过程,并分享我们在这一过程中学到了很多经验。我们还计划在未来的技术博客中介绍其他视频服务。请关注我们的Netflix技术博客以获取最新信息。

致谢

向CIS团队致以热烈的掌声,赞赏他们在构建Cosmos平台上的出色表现,以及他们对开发者反馈的快速反应。

我们非常感谢用户、流媒体编码团队和视频工程团队的支持。大家的反馈对我们改进平台和提供更高质量的服务至关重要。

我们也想感谢Christos Bampis和Zhi Li在视频服务上的重要贡献,以及前团队成员Chao Chen和Megha Manohara在项目早期阶段的贡献。

脚注:

或直接使用:
脚注:

  1. 曾用名为媒体云工程/MCE团队。
  2. 实际的视频服务数量比这里列出的要多。其中一些是Netflix特有的服务,因此在这篇博客中未被提及。
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP