zl程序教程

您现在的位置是:首页 >  其他

当前栏目

优化 Facebook 视频的存储效率

2023-03-31 10:30:26 时间

来源:Video @Scale 2021 主讲人:Jin Zhang and Jamie Chen 内容整理:付一兵 本文来自Video @Scale 2021,video infra 与 Facebook capacity team 合作,为每个 FB 视频建立了source + MVE(minimum variable encoding,最小可变编码)的存储策略,通过视频生命周期管理系统,确保视频的存储消耗与它的受欢迎程度成正比。这种技术成功抑制了 2021 年 FB 视频预计的 70% 的存储增长。

目录

  • 视频量的增长:对 FB 以及所有人的挑战
  • FB 视频存储策略
  • 视频生命周期管理
  • 未来工作

视频量的增长:对 FB 以及所有人的挑战

在讨论视频的增长之前首先来看一般的数据增长。在下图中,绿线是用来存储或处理数据的计算机供给,而蓝线是呈指数增长的我们的数据。

显然在过去五十年里摩尔定律确实帮助了我们,我们有了越来越便宜,速度越来越快的硬件。从某种意义上说,我们能够跟上数据需求。然而,现在开始出现差距,而且这个差距正在扩大。这不仅意味着我们可能用尽用来存储快速增长的数据的空间,还意味着我们必须建造更多的计算机,更多的数据中心,意味着消耗更多的电力、冷却设备和空间。这种简单地建造越来越多的建筑的解决方案不再是可持续的。

现在视频增长的情况与一般的数据增长非常一致,自疫情开始以来,用户在所有 Facebook 应用上花费的时间增加了 70%,Instagram 和 Facebook 的直播观看量在一周内增长了两倍。这些增长并不是 Facebook 独有的,如果我们仅看去年 12 月 就有 12 亿或更多的人在 Youtube 或 Youtube 电视上观看视频。思科还估计,到 2022 年 82% 的创建内容将是视频。所以视频量的增长将是一个挑战。这意味着我们需要:

  • 更高效的硬件
  • 更多的加速器,
  • 更多的软件优化,如视频生命周期管理或视频存储策略

FB 视频存储策略

下面将介绍 Facebook 是如何管理它的视频存储的。为了理解我们的解决方案,首先需要理解 FB 视频存储策略(FB Video Storage Policy)。

对于一个 FB视 频,我们通常会提供多个编码,包括渐进式编码以及不同编码器的 dash ABR lane,Naiv Policy 会永久储存这些记录。基于 Facebook 技术的服务目标 很快就会发现这种方法太简单了,多年来 facebook 已经并到一个名为 Source+MVE 的存储策略中,在此策略下将只永久保留两份编码,一个是 Source 编码,这是一种超高质量的编码,可以用来再生其他编码器编码,一个是最小可行的编码 MVE,这是一种中等质量的编码,可以是 progressive 或 dash。这样做的目的是确保我们总是有东西可以提供给用户。

FB 的 Source+MVE视频存储策略

我们如何保存源取决于视频的创建时间,有两种不同的方法,

  • 对于较新上传的点播视频,Source 是原始上传的经过修正的副本,任何进入 Facebook 的视频都会首先被分析,如果它是好的,我们会保存起来,如果它质量不好,我们将首先尝试通过转码来纠正它。如果纠正不起作用或输入有一些违规行为,我们就直接拒绝。
  • 对于 Source 早已不在的旧的点播视频,我们将尝试找到可用的最佳编码并将其推广到 Source

视频 Source 保存策略

对于最小可行的编码 MVE,有两种不同的模型,

  • Original Source + Progressive MVE
    • 可以覆盖 100% 的设备
    • 再生质量高
  • HD DASH Source + SD DASH MVE
    • 有较好的播放支持
    • 可以压缩更多存储空间

视频生命周期管理

下图是一个 Facebook 视频生命周期的简单的演示。在 Facebook 视频可能会经历三个状态:RECENTHOTCOLD

  • 一个视频在创建后将进入 RECENT 状态。
    • 此时我们仍然原件并将保留 Source 和 MVE,我们还产生低成本的 basic ABR 以改善用户体验。
  • 如果视频得到足够的关注将会进入 HOT 状态。
    • 在HOT状态下 我将从 Source 编码中产生一些其他高级的 ABR,这是为了保证交付给用户更好的质量。
  • 如果视频几乎没有热度将会进入 COLD 状态。
    • 所有暂时的编码在该状态下都会失效,只保留 MVE 和Source。

这三者之间的状态转换通常如此。所有的视频将进入 RECENT 状态,一小部分视频获得足够的观看时间进入 HOT 状态,一旦人气下降得不到关注将变为 COLD 状态。大部分的视频会得到很少的观看时间或者没有观看时间,直接经历 RECENT 到 COLD。只有非常罕见的情况下,一些 COLD 状态的视频重获人气重新进入 HOT 状态。

FB 视频生命周期

一旦视频进入冷状态 我们可以做很多事情来保存永久文件,而对视频生命周期进行管理和实现存储空间的系统称为视频生命周期管理器,下图演示了视频生命周期管理器的工作流。

  • 首先从视频资产目录开始,这是一个完整的 Facebook 上创建过的视频列表。
  • Data Query 过滤掉一些不相关的视频,输出的数据进入视频生命周期状态管理。
  • 生命周期状态管理器将帮助检查当前视频的状态,
    • 如果处于 COLD 将根据生命周期设置采取行动来管理编码文件,
    • 否则视频将被标记状态,重新回到视频资产目录,开始检查流程

视频生命周期管理器

让我们深入研究这里的一些关键值。

  • 视频资产目录。
    • 视频属性,说明录制视频的基本信息,例如视频持续时间、视频创建时间等;
    • 视频生命周期属性,由视频生命周期管理器维护和跟踪;
    • 视频消费信息,它们通常以【最近x天的观看时间】的形式出现,这是视频受欢迎程度的一个指标。
    • 这是一个巨大的数据库 追踪所有在 Facebook 上创建的视频,所以我们讨论的是数十亿视频的技术。所有的栏目都可以分为三类:

视频资产目录

一旦视频通过 COLD 阶段,我们可以做很多事情来管理编码文件:

  • 减少复制
    • 在创建时任何编码时都会保留不同区域的两个不同副本,一旦进入 COLD 状态,我们可以只保留一份。这个策略通常被应用到Source中。
  • 清洗
    • 我们要做的是删除所有的中间长度,只留下最好的质量和最差的质量。
  • 再压缩
    • 这是另一个可以应用到 Source 的策略,我们可以通过转码来进一步减少 Source 的大小,重新压缩总是伴随着计算机成本,需要在质量和存储之间进行权衡。所以目前 Facebook 的视频只采取了前两个策略。

结果就是,自我们 6 月份开始应用视频生命周期管理器,已经成功地抑制了下图中的增长曲线,实现了 45% 的存储节省。这是个令人兴奋的开始,但我们可以做得更好。

未来工作

  • 同时减少 Source 和 MVE

之前我们讲过两种 MVE 模型,其中一种中 MVE 是渐进的,Source 是高质量的、不可交付的。在这种情况下 MVE 是唯一能交付的记录,不适合再削减。另一种是 HD DASH Source 和 SD DASH 编码,这两者可以形成一个 ABR 一起传递,因此 如果其中一个由于数据中断而不可用,我们总是可以求助于另一个。我们将同时减少 Source 和 MVE 来实现更少的储存空间。

  • 将存储效益和成本模型集成到视频生命周期管理器中

我们可以用效益成本评估器来代替生命周期冲突中管理编码的静态规则,回想一下前面的重新压缩编码操作会带来计算机成本,我们还需要在存储和质量之间进行权衡,这是一个适合效益成本评估的情况,这样我们就有了编码管理的第三个选择,这将帮助我们实现更好的视频存储效率。

最后附上演讲视频:

http://mpvideo.qpic.cn/0b2e2qaaeaaajuabyxfhqzqvbvgdalkaaaqa.f10002.mp4?dis_k=98b42f69c5ffd7acf0074df0c578d205&dis_t=1638414227&vid=wxv_2160066998574120961&format_id=10002&support_redirect=0&mmversion=false