我们如何将视频编码加速八倍



每天,数百万观众在Internet上观看视频。但是,要使视频可用,不仅必须将其上传到服务器,还必须对其进行处理。这种情况发生得越快,服务及其用户就越好。

我叫Askar Kamalov,一年前我加入了Yandex视频技术团队。今天,我将简单地告诉Habr的读者,我们如何使用编码过程的并行化来设法多次加速向用户交付视频。

对于那些以前从未考虑过视频服务幕后发生的事情的人来说,这篇文章将是主要的兴趣所在。在评论中,您可以提出问题并为以后的帖子提出建议。

关于任务本身的几句话。Yandex不仅可以帮助搜索其他站点上的视频,还可以存储自己的服务视频。无论是作者的节目还是Ether中的体育比赛,KinoPoisk中的电影或Zen和News中的视频-所有这些都上传到我们的服务器中。为了使用户观看视频,需要进行准备:将其转换为所需的格式,创建预览,甚至通过DeepHD技术进行驱动未经准备的文件只会占用空间。我们不仅在讨论铁的最佳使用方法,还在讨论向用户交付内容的速度。示例:在事件本身发生后的一分钟内,就可以在搜索中搜索具有曲棍球比赛决定性时刻的记录。

顺序编码


因此,用户的满意度很大程度上取决于视频的可用速度。而这主要取决于转码的速度。如果对视频上传速度没有严格的要求,那么就没有问题。取一个不可分割的文件,将其转换,然后上传。在旅程的开始,我们是这样工作的:



客户端将视频上传到存储库,Analyzer组件收集元信息,并将视频传输以转换为Worker组件。所有步骤均按顺序执行。同时,可以有许多用于编码的服务器,但是只有一台服务器正在忙于处理特定的视频。简单,透明的布局。这就是它的优点所在。这样的方案只能纵向扩展(由于购买了功能更强大的服务器)。

具有中间结果的顺序编码


为了减轻痛苦的期望,业界提出了一种快速编码选项。这是一个欺骗性的名称,因为实际上,完整的编码是顺序进行的,并且持续时间很长。但是有一个中间结果。这个想法是这样的:尽快准备并上传视频的低分辨率版本,只有更高版本的视频才可以上传。

一方面,视频变得越来越快。这对于重要事件很有用。但另一方面-画面模糊,这使观众感到烦恼。

事实证明,您不仅需要快速处理视频,而且还需要保持其质量。这就是用户现在对视频服务的期望。似乎足以购买效率最高的服务器(并定期一次升级所有服务器)。但这是一条死路一条,因为总有视频会减慢最强大的硬件的速度。

并行编码


将困难的任务分解为许多不那么复杂的任务,并同时在不同的服务器上解决它们,效率更高。这就是用于视频的MapReduce。在这种情况下,我们不会依赖单个服务器的性能,而是可以水平扩展(通过添加新计算机)。

顺便说一句,将视频分割成小块,同时处理并将它们粘合在一起的想法并不是秘密。您可以找到许多有关此方法的参考(例如,在Habré上,我建议发布有关DistVIDc项目的文章)。但这通常不会使它变得更容易,因为您不能只是采用现成的解决方案并将其构建到您自己中。我们需要适应我们的基础架构,视频甚至工作量。通常,编写自己的代码会更容易。

因此,在新架构中,我们将按顺序编码的单块Worker块划分为微服务Segmenter,Tcoder和Combiner。



  1. 分割器会在大约10秒钟内将视频分割成多个片段。片段由一个或多个GOP(图片组)组成。每个GOP是独立的,并且分别进行编码,因此无需参考其他GOP的帧就可以对其进行解码。即,片段可以彼此独立地再现。这种分段减少了延迟,使您可以更早地开始处理。
  2. Tcoder . , , (, , ), . , Tcoder .
  3. ombiner : , Tcoder, .

关于声音的几句话。最受欢迎的AAC音频编解码器具有讨厌的功能。如果您分别对片段进行编码,那么将它们无缝地粘在一起根本是行不通的。过渡将很明显。视频编解码器没有这种问题。从理论上讲,您可以寻找一个困难的技术解决方案,但是这款游戏绝对不值得(音频比视频重得多)。因此,只有视频与我们并行编码,并且音频轨道作为一个整体进行处理。

结果


多亏了并行视频处理,我们大大减少了下载视频到我们之间以及用户可用之间的延迟。例如,为一个持续一个半小时的FullHD电影创建多个质量不同的完整版本可能需要两个小时。现在,这需要15分钟。此外,在并行处理中,我们使用旧方法创建的高分辨率版本甚至比使用低分辨率版本的高分辨率版本要快,且结果中等。

还有其他。使用旧方法时,要么服务器可能丢失,要么服务器闲置而没有任务。并行编码可以增加铁利用率的份额。现在,我们拥有一千多台服务器的群集始终忙于处理某些事情。

实际上,仍有改进的空间。例如,如果我们甚至在视频完全到达之前就开始处理它的片段,就可以节省很多时间。正如他们所说,还有更多。

在评论中写下您想要阅读的视频工作领域中的哪些任务。

与行业同行的有用链接



All Articles