点击上方👆蓝字关注我们!

视频处理系统整体介绍

端侧生产:视频的创作者用手机或者其他设备拍摄一个视频,可以对视频做一些增强和编辑,通过上传 SDK,即可把这个视频上传到云端。 云端生产:在云端有两个比较核心的流程:视频处理和审核,这两个流程是并行执行的。 云端下发:当以上两个流程都执行完以后,一个视频也就可以给大家看了,接下来就进入云端下发的阶段。在这个阶段,点播服务负责下发视频的播放地址(包括相关的 meta 信息),然后视频的内容是通过 CDN 下发。 视频播放:这个阶段由播放 SDK 进行端上视频的处理以及渲染。
大规模:目前,字节跳动每天处理的视频量级在亿级,因为每一个视频都会产生不同档位、不同格式的视频,实际生产出的是接近十亿量级的视频。这对计算和存储都是非常大的消耗,这么大体量的业务对系统整体的稳定性和性能也有非常高的要求。 多业务:字节跳动的视频业务非常多样,包括短视频、中视频、长视频,以及点播、直播、RTC 相关的一些业务,涉及教育、游戏等不同的垂直行业。 资源复杂:除了常规的 CPU 资源,还有很多弹性资源,以及 CPU/GPU/FPGA 等多种类型的资源,还有一些其他的硬件转码设备等。 业务高速增长,以及大型活动的峰值:到目前为止,每年处理的视频量级至少都是在翻倍地增长。每年又有很多大型的活动,给系统带来了非常巨大的考验。
视频处理系统的目标

满足业务需求。 提升用户体验。比如画质、流畅性等方面的体验。 降低成本。字节跳动的体量带来的计算、存储以及 CDN 成本都非常巨大,所以降低成本也是一个很重要的目标。
视频处理系统架构

用户平面:顾名思义,就是从用户的角度,如何去调用系统。 控制平面:它面向的是开发人员、运维人员、支持人员,他们如何去控制这个系统,以及当系统出问题的时候,怎么样对系统做一些管理和应急处理的动作。 数据平面:系统每天会产生海量的数据。这些数据一方面可以进行分析,来指导系统的优化。另一方面也用于计量、计费、监控等。
服务层:主要是处理鉴权、任务队列的管理、上层的模板管理、策略控制等等。 工作流系统:主要是为了串联异步、分布式的媒体处理流程。 Lambda:高可用的函数计算平台,它最大的作用是管理底层海量的资源,并且对资源进行高效的调度,以及任务的执行。 BMF:它是一个动态多媒体处理框架,目标是把所有多媒体处理的原子能力进行插件化管理,然后提高系统的可扩展性以及开发和运维的效率。

服务网关:它可以进行跨机房的流量调度以及一些接口的鉴权,包括接口层的限流。 管理服务:它有两个作用,首先是对整个视频处理系统的所有元数据进行管理,包括任务队列、模版和工作流信息等;另外是会触发底层工作流的执行,同时会去管理整个工作流的生命周期状态。 弹性队列:可以隔离业务侧的资源。它实现的功能包括:队列的资源配置(任务的 QPS,最大并发任务的数量 MRT)、队列管理以及弹性资源的管理。


Gate:处理流量调度,包括鉴权的功能。 Engine:管理所有工作流的状态。 Scheduler:一个工作流包含很多节点,Scheduler 可以对每一个节点进行细粒度的任务调度。 VWorker:它是上层和下层的粘合层,会把上层一些偏业务属性的模板转换成一个底层,实际可以执行的函数任务的参数。
多级限流:限流是常用的手段,但是视频处理的不同点是会有一个任务筛选的过程,需要保证在有限的资源里,所有重要的任务要被优先执行。举个例子,假设底层计算资源现在突然变为正常的一半,如何减少对业务的影响?首先,在工作流层面,需要把一些对任务延时不敏感的工作流任务进行 delay,这就需要一些策略的预设置;另外,同一个工作流里面,需要对不同的节点进行优先级的配置,比如视频要转出五个档位,可能其中有两个档位是大家消费概率最高的,就需要把这两个档位优先转出来,其他的档位进行延迟处理。这整体就涉及到了多级限流以及限流策略配置的一种能力。 批量重转:它是什么意思呢?举个例子,假设昨天底层的同学上线了一个有问题的功能,但是今天才发现。这时要做的是把昨天这个功能上线这个功能以后所影响的视频全部筛选出来,快速进行重转,而且不能够影响目前正在运行的业务。这里面涉及到两个问题。第一点是如何准确的从某任意一个时间点到另外一个时间点把这一批视频全部都挑出来。第二点是快速重传,而且不能影响线上的业务。所以这里需要有一个单独的子系统来负责整体的批量任务的查找和重转。


减少视频应用开发的成本,使应用开发标准化。 通过一套框架支持各种复杂的应用场景,从框架本身来讲,它具有比较高的灵活性。 通过这个框架把所有视频处理的原子能力模块化,并且做到动态管理和复用,以此解决大规模协同开发的问题;同时,也能使这些能力比较好地复用在不同的场景和业务上。 屏蔽底层的硬件差异。业务现在会越来越多地用到不同的异构硬件,比如说 GPU,我们希望这个框架能够 原生支持这些硬件。


总结和展望

关注👇👇公众号,后台回复【视频架构】获取本文对应的 PPT。

文章转载自火山引擎开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




