Serverless 音视频转码 —— 芒果 TV 落地实践(上)

本文整理自芒果 TV 吴坚强在 Techo 大会的分享,文字部分约 3400 字。

下面,让我们一起回顾下吴老师在 Techo 大会的精彩演讲内容。

代码语言:javascript
复制
原文作者:吴坚强  
整理编辑:王天云 李永程

大家好,我叫吴坚强,来自芒果 TV,非常荣幸收到腾讯云的邀请来和大家分享芒果 TV 在腾讯云 Serverless 上的落地探索及实践。

今天的分享,主要从目前 Serverless 的易用性以及出于对资源的消耗和成本的考虑,希望能为做类似业务落地的同学提供一定的参考。

我本次的分享主要分四个部分,第一个是芒果TV简单介绍;第二个是音视频编解码业务的简述及发展现状;第三是引入Serverless结合以后,我们在此期间做的事情;第四是规划及展望。

芒果TV,在座各位都比较熟悉,它是湖南广电下的视频平台。大家熟知的《快乐大本营》、《明星大侦探》、《歌手》、《爸爸去哪儿》等等这些节目,尤其是在今年推出的自制节目《乘风破浪的姐姐》,非常火爆。

芒果 TV 作为湖南广电双核驱动的战略主体之一,是国内 A 股首家国有控股的视频平台。经过这么多年的发展,获得非常多的荣耀。

芒果音视频编解码业务

下面我简单介绍下我们团队承担的业务,主要有以下几个方面:

在自有内容的音视频播出里,每天有海量视频的生产,消耗我们很大的计算资源。每天处理的量从 240P 到 4K 等不同清晰度、超 50 余种格式,包含 AVC、HEVC、MPEG等多种编码格式。

而在 UGC 方面,我们需要快速将创作者的内容呈现给用户,给创造者带来收益。这一块目前我们有一部分还是在用腾讯云的点播服务,后期逐步往 Serverless 上面迁移。

主观感兴趣视频编码的研究

下面我分享一下主观感兴趣视频编码的研究,它是基于视觉冗余原理和对编码器引擎深度优化,相对原生 X264、X265 编码软件同等主观画质降低码率 40% 以上。

第一,我们进行前期的预处理,通过分析这个视频动态复杂度、场景、镜头等,自适应匹配到RDO编码曲线最佳性价比码率,从而实现在不降低主观画质的体验上,去降低码率达到 30% 以上。

第二,主观感兴趣的区域编码。图二,是我们人眼聚焦的点在小汽车上面,可以看到一个人开着车的动作,利用人眼视觉感兴趣区域关注特点,通过芒果自研基于 AI 的主观感兴趣区域预测模型,指导编码器在不同区域的编码质量权重分配,同等主观体验降低码率15%以上。

第三,视频编码图像增强技术,自主研发的系列编码图像优化技术,在不增加码率前提下,达到超越源片画质的体验提升。

我们在前面看到的是编码的算法研究,而在庞大的音视频处理平台的版本迭代过程中,我们还有很多的研究。

芒果音视频转码平台产品迭代

从2015年起开始第一代,基于 Hadoop 的 MapReduce 计算实现,它处理量比较少,随着业务的快速发展,后期我们发现该架构扩展比较困难。

第二代,是基于mesos的分布式资源管理框架,这个时候我们的业务已经有所增加,日处理量得到提升,尤其是 2016 年芒果提出独播的战略,音视频内容需要快速生产上线,在此基础上实现了视频分段转码。

第三代,是在2019年的时候,由于引进AI技术和我们图像优化技术,引入这些方法后,因此采用K8S来实现资源的调度,自研调度及工作流编排。而到今年因受到疫情的影响,我们视频的量增长的非常快速,尤其是在UGC,超过以前十倍以上的量,引入了Serverless的后,快速的实现了集群的扩容,快速去提供我们所需要的计算资源。

Serverless 的价值

第一个场景,我们为什么要去用这个Serverless,在此之前,前面的几位大咖已经分享过。从下图我们可以看到,从左到右云端计算的发展,云计算一直在进步的。

左边是我们早期是物理机托管,到云主机到容器的出现,到现在Serverless的出现,已经得到非常的发展。

早期的物理机和云主机和容器的特点,决定了30%的时间是处于低负载的情况。而芒果早期视频的转码,大概有上百台服务器,在本地IDC机房。白天资源严重不足,但到凌晨则处于低负载,服务器资源无法合理使用,而如今采用 Serverless 以后,能够保证我们资源得到合理利用。

Serverless 能够给我们带来哪些价值呢?

  1. 快速部署、弹性伸缩灵活的按量使用,降低业务使用瓶颈。
  2. 按使用场景实现任务的多地域调度能力,根据用户来源去调用每个区域资源合理使用。
  3. 云上备份容灾机制,实现业务的不间断运行。
  4. 在确保性能的基础上省钱省事的目的。

芒果 Serverless 落地实践

下面介绍下我们在引入 Serverless 以后的落地实践。总体来讲,我们在 Serverless 落地的实践包括以下几个方面:

第一、音视频转码

刚刚做了简单介绍了,我们在云端利用 Serverless 实现音视频转码, 它只需要简单的三步就可以达到:

第一步,创建函数,部署自研编码器资源包、部署转码逻辑。

第二步,配置 COS Bucket 触发器,对源视频实时处理加工;旁路生成日志和监控、支持告警。

第三步,对转码后的视频回传 COS,并分发到自建 CDN 或腾讯 CDN 节点。

它的核心优势主要是在于凭借云函数强大的联动能力,能够将我们视频上传以及视频处理和加工,还有视频提取还有存储场景能够有机结合为一体。

第二、支持灵活处理

能支持自定义转码函数,自身编码器能够快速部署上去,弥补单独服务,云服务的盲点。

第三、平滑迁移

线上 UPGC 内容采用的云厂家的点播服务,编码器处于不可控的状态。而采用 Serverless 后能够平滑迁移我们自己的转码系统,把自研的编码器迁移上去,可自由调节所需参数,达到优化视频质量的目的。

第四、降本增效

这是最大的优点,能够大量降低我们成本,我们在上线以后,计算资源的成本降低了百分之四五十以上

我们原有的音视频转码架构,需要自己监控各项指标,比如说 CPU 和内存,还有网络带宽。我们通过触发器,去调动云服务器的安装镜像去接入计算平台,这个有一个比较大的问题,它这里延时比较高。

第二,我们启动以后,什么时候释放资源也存在很大的问题,造成大量计算资源的浪费。而所以采用 SCF 以后,就可以运用云函数自动扩容的方式去应对大量用户请求,同时腾讯云实现了实时监控,比如说内存、并发,网络带宽。

芒果业务场景:自研的 DAG 工作引擎支持函数编排

目前我们在使用云函数过程当中,一个比较困难的点,我们编排了十几个函数或者是几十个函数后,发现把函数串联起来的时候,有一点困难。

因此后期我们通过自研的 DAG 工作引擎来实现,它支持我们本地任务调度的同时,去支持SCF的编排,解决了函数之间的联动调用,可以从图片看到,一个视频进来我们要提出它的水印,提取音频,或者是后面要做视频的封装,而不同的封装格式,为了节省这个资源,会将转码出来的文件做不同的转封装输出。

芒果业务场景:视频魔术手

另外一个业务场景,就是视频魔术手。在使用芒果 TV APP 的时候,用户看到一个精彩片段或者是自己喜欢的明星片段,想把片段分享出去,需要对视频做裁剪。

实现的方案有两个,第一个从客户端去实现,第二个从服务端实现。

我们在调研的过程当中发现,在客户端实现的时候,考虑用户设备的计算资源,还有他可能有一个弱网环境下,导致内容上传出现问题,因此我们从服务端去实现,采用云函数SCF处理来解决。客户端、浏览器或者是 APP 小程序请求生成片段时,利用 SCF 处理后将视频地址返回给用户播放,再分享出去。传统服务端实现需要考虑负载均衡,但是这次我们采用 SCF 后能够动态去扩缩容,成本低,而且用户没有任何请求的时候,不要支付费用任何费用。

我们考虑视频处理的场景非常消耗资源,用户一次请求需要消耗 4 个核心 CPU,64 核传统的服务器,同时能够处理16个用户的请求,如果我们 QPS 达到 100 的时候,需要大量的服务器去支撑,而在采用SCF后,这是目前我们做的收益非常大的一个面。

最后,我再总结下我们在使用云函数以后的实际感受

  • 高易用性,我们只需要实现业务代码的逻辑,无需关心非功能开发以外的问题,免运维。
  • 稳定性,目前稳定性还是非常高的。但是有一个问题,是实时处理的重试处理。
  • 快迭代,支持版本号,API 流量自由分配,快速实现灰度方案。
  • 快启动能力,每次在一秒钟之内实现,20 秒以内能完成,现在目前能满足我们需求。

芒果TV 音视频转码团队下一步业务规划

Serverless 的架构下用户不用再去关心运维所需要的资源,我们直接关注业务代码逻辑,按照时间消耗支付费用。随着 Serverless 出现,云函数计算才真正到来了。

考虑到我们未来建设能力,可以将 4K、CPU、AI 能力往上去迁移,目前来说 GPU 在 Serverless 上面未能实现,但未来可期待。其次是我们转码架构升级,未来我们将本地的系统往上面迁移,可以帮助我们把研发效能提升。第三个是降低运维复杂度,优化转码成本。虽然 Serverless 还有不足的地方,需要去完善。但是凭借 Serverless 自身强大的优势,无论是对企业还是开发者来说,它还是具有非常大的吸引力的。

相信随着未来技术飞速的发展,Serverless在未来有无限想象的空间。谢谢大家!

One More Thing

立即体验腾讯云 Serverless Demo,获取 Serverless 新用户礼包,请在 PC 端访问: serverless.cloud.tencent.com/start?c=wx

欢迎进入千人 QQ 群 (537539545) 交流!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」进入 Serverless 中文网,体验更多 Serverless 应用的最佳实践!