开发者学堂课程【从 0 入门函数计算:典型案例 2:函数计算在音视频场景实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/645/detail/10726
典型案例 2:函数计算在音视频场景实践
内容简介:
一、 场景介绍
二、 基于函数计算音视频处理方案对比自建服务的优势
三、 基于函数计算的音视频场景最佳实践
一、场景介绍
通过前面的基础课程对很多计算的基本概念运行原理和基本功能有初步的了解。
计算在音视频场景主要分为 3 个部分。第一部分是场景介绍,第二部分最佳实践,第三部分有 demo 的操作演示。
场景介绍
对于近期移动视频短视频领域的场景趋势来说,计算在该领域的核心价值和优势。
最佳实践中会以从简单到复杂的角度介绍函数计算一些音视频领域场景中的实践。
自从 2020 年初的新冠疫情,音视频领域如短视频,在线教育,视频会议已经成为所有行业各个年龄群体的硬需求,而且伴随着近几年直播带货的热潮,音视频场景已经成为很多企业创新的新方向,易观千帆数据显示,2020 年6 月国内移动视频领域活跃用户规模接近 10 亿,视频用户使用时长达到 670 多个亿小时,音视频场景的开发者们面临着什么样的挑战。挑战主要有需要室内大量不同终端,例如从电脑端 Windows、MacOS 到移动端,从企业应用 APP 到小程序、浏览器等打造一个通用的行业解决方案是非常困难的。
往往需要开发者们针对具体的需求重新架构和定制方案。第 2 点是音视频处理系统对于资源方面的需求是非常巨大的,常见的视频文件的一些处理,转存、分发、点动,这样一个音视频系统的打造对于 CPU、内存、网络资源使用要求非常高的,这也造成了整个资源运维上面的一些难点,需要管理大量的机器和网络,自建的要求非常高。第 3 个主要是由种类多,变化快,企业如果没有创新的话,很快会被淘汰。
音视频场景正好业务场景非常复杂而如果迭代比较慢的话,一旦抓不住观众的趋势,就会被淘汰。
针对视频领域的行业背景和客户痛点,基于函数计算的弹性高可用处理系统的核心价值在于:高性能、高可用、高弹性。
第 2 个是百毫秒弹性能力的容灾,最高单实例八盒,没有上限,而且结合 Surface 免运维传输业务开发的特性和低成本可以完全做到按需使用按量付费等等,结合多种计费模型能够真正满足企业更灵活,满足各类定制需求的行业场景,成为短视频直播带货在线教育,在线办公领域,企业创新的原动力。
二、基于函数计算音视频处理方案对比自建服务的优势
如果说要自建一个服务的话,需要采购和管理基础设施。如果采用的是阿里云函数计算的时候,底层基础设施是由系统来自动分配的,开发者无需购买和运维资源,仅需部署代码即可按按量付费。从开发效率来对比,自建服务除了必要的业务逻辑,还需要自己建立相同现象产品运行环境,来测试验收相关软件的安装环境配置安全更新等等一系列问题,大量的时间花费在了非业务创新的环境维护上,基于函数计算的解决方案只需要关注业务逻辑的开发配合函数计算控制台或者工具做到一键部署和任务编排,再也不需要浪费大量的时间在环境维护上。
音视频场景需要海量资源消耗,要保证服务高可用,高性能,高弹性自建服务需要很强的开发能力和完善的监控系统来保证稳定性,通过 souls 工作流编排函数就可以实现多个视频的并行处理以及单个大视频的分布式处理,稳定性和监控交给了云平台来维护,开发者能够快速完成一个并行的或者说分布式的视频处理系统的落地。
从学习上,成本和项目周期来考虑函数计算大大减轻了企业能力负担,更多来考虑业务能力不用过多的去关注系统架构能力对于人的本身的要求,增加了招聘的负担,项目整个项目的周期也可以从保守的约 30 个人下降到 3 个人左右,这对于中小企业甚至大企业来说函数计算释放的技术红利为企业带来了质的飞跃。
三、基于函数计算的音视频场景最佳实践
从简单到复杂的顺序介绍。第一家是北京爱思酷科技有限公司,是一家英语在线的教育公司,曾获得苹果 App Store 首页推荐,品相继获得豌豆荚最佳设计奖,小米年度最佳英文的奖项,企业有海量音视频文件需要音频处理,短视频转码处理等等。
而且很多基于机器处理机器学习的 MP 需求,比如分词,词法分析等等。
基于函数计算的方案,客户上传音视频文件到阿里云对象存储即可,一旦文件上传成功会立即自动触发函数,执行函数计算系统会自动根据任务实时同时将转码后的音视频文件转存到对象存储应用。
该方案客户在 2 天内即完成了业务开发,同时也满足了客户对于弹性高可用能力的诉求,计算力不再是瓶颈,高峰期函数计算提供了大量计算资源进行音视频处理,上传到对象存储的千万级音视频文件,自动触发函数计算,几个小时内就能完成整个业务流程。函数代码的高度自定义是在当前还没有产品化解决方案的情况下是该场景最佳实践。在音频和短视频处理场景下,用户反馈节省了大约 60% 的机器成本。
芒果 TV 是湖南广播电视台旗下唯一的互联网视频平台,作为中国唯一1家拥有全终端,全平台牌照的网络视频平台。
芒果 TV 每天要处理大量用户视频为保证数据量突增的系统瓶颈,减少显示服务器资源成本。他们基于函数计算的事件触发机制,伸缩能力可以有效解决芒果经济遇到的问题。
客户上传海量视频文件存储,由对象存储自动触发函数执行该过程完全基于阿里云BBC 内网,不会产生任何网络费用,同时在视频处理完后还是任务会将结果视频推送到这边系统,由 CDN 完成内容的就近分发。
基于函数计算的前三代架构整个流程可以看到高度的自动化,视频的上传处理推送分发,在极短的时间内完成在满足芒果TV功能需求的前提下同时做到了弹性高可用,计算力不再是瓶颈。事件驱动能力保证了实时监听对象存储的事件,并能够快速把数据推送到后端系统加快处理速度,提高处理效率,即使在上传视频高峰期视频处理也不会有任何的排队,保障了服务的稳定性。
客户反馈在总体费用上有了明显的降本成果,系统对比上一个系统是越来越复杂的,在阿里云整个音视频的场景下会有越来越复杂的那个系统架构和场景。
天天看看是一家每月服务过硬用户的互联网公司,免费提供电影电视剧综艺等视频资源,高清在线点播和下载,每天有大量的上传视频需要及时转码处理以适配各种终端和网络条件。
消除短时间内准备大量的计算资源进行大规模并行转码处理。同时希望基于S分配的自建的角马服务能够简单迁移过来.
芒果 TV 的方案在接入层增加了健全适配多终端的需求,在计算层并行处理的实验要求。对于大视频有更高要求的,客户可以通过很多计算机 API 网关触发器工作流任务编排能力,快速完成业务的迁移,也可以去编排整个任务的状态,完成整个并行计算的处理。其中基于 XML 自建的战马服务基本上不需要改动就可以直接部署在函数计算上,满足客户弹性高可用高度制定降低成本的需求。
第4个案例蓝墨,蓝墨是一家由美国留学生回国创业的高科技公司。他们专注于移动互联网数字出版和移动学习领域的新技术研究及平台运营。
它的增长速度是非常快的。它有海量的视频教材需要剪辑切分,组合转码,将便利调整等等复杂的工作,而且它的需求量存在极为陡峭的波峰波谷。他们核心的诉求是节省成本,极具弹性,免运维。蓝墨的架构中有大量的云服务联动,他对比前面3个案例增加了日志服务,消息服务等等。
而且它有大量的大物件需要并行处理。蓝墨选择了函数计算作为架构的核心服务,充分享受云原生的架构技术福利,完全按需调用。同时通过任务编排实现复杂的并行处理方案落地,相比于传统传统的方式基于函数计算的方案帮助栏目节省了 60%左右的 IT 成本投入,应该是非常可观的,而且做到了无需运维极高的弹性能力,帮助蓝墨技术团队更专注于复杂业务逻辑的实现聚焦业务创新。这对于一个初创的公司,一个高速成长的公司非常有意义的,需要专注于整个业务价值的增长,而不是对于一些底层技术细节的一些追求。可能是不同企业不同的诉求。
很多计算在从简单的快速上云耦合的一些服务,再到结合更复杂的像 solace 工作流,像日式服务消息服务 CTS 等等这样的一些云服务系统,它在重新他在中间发挥了非常重要的一个联合的作用,整个流程是通过很多计算能够快速的整合起来,形成一整套方案。能够帮助客户更聚焦业务的开发快速落地。
不同业务场景下音视频里面有一些最佳的实践。例如可能是基于一个 APP 的服务。在这样一个业务场景下,怎么样能够最快速的基于函数计算落地一个对应的代码,下面将为演示整个 demo 的实际操作过程。
首先打开一个函数计算的控制台,登录到阿里云控制台。在整个阿里的控制台里面可以看到整个函数计算相关的一些状态,包括一些指引等等,首先回到应用中心基于模板创建应用。可以在这样的应用中心里面可以看到很多函数计算在音视频场景的最佳实践。以模板形式提供,可以直接通过 对应的场景去选择对应的模板示例, 基于模板示例再去更改适配的服务。
从这最简单的结合音视频点播的一些转码设定到一些综合的示例,到基于F的弹性高和进行处理包括转码服务的一些服务,包括更复杂的分开了的视频分片,传达服务。基于整个详情应用里面可以看到整个应用相关的一些介绍。
帮助系统实时实现白屏化的 dashboard,完全是避免去再去重复。需要上传一个任意格式的文件指定对应的视频文件的后缀到一个 OS 的目录里面输出自动触发函数执行之后,生成的视频文件会输出到文件里面。可以根据 output 去观察整个监控指标。它的工作原理就是客户上传一个视频到对象存储,对象存储自动的触发函数计算应立刻执行,函数计算执行之后,处理转码之后会把对应的视频文件转成回对象存储,客户可以在对象存储里面去拿到它对应的转码后的文件。
到服务区来点击部署,部署首先需要创建一个对应的一个应用比如起个名叫 MP4 trans, 需要配置对象一些相关的配置。也可以指定其他更多的一些格式,点击部署。通过部署可以很快的看到就是对应的这样一个应用打包出来的一个逻辑资源,函数计算它是以函数作为最小粒度的控制单元,可以把函数通过逻辑的服务组合成一个服务的概念,服务的很多服务概念为组合成一个应用的概念,但可以一个函数作为的一个业务去使用,也可以去更多的函数组合把它打包成一个应用来提供这样的服务。那音视频场景因为相对比较复杂,所以把它打包成一个应用。
那可以在世界里面可以看到整个这样的一个应用创建的整个完整的过程,也可以在资源包括监控包括设置里面可以看到明显的看到整个应用模板里面相关的一些内容,可以看到里面相关的一些配置。也可以通过服务函数里面可以看到 MP4 服务。函数音视频的是示例配置的是内存是 3 个GB 的,直接拍成 3 个。
里面的一些超时的时长等等,资源上的一些配置的需求也可以看到。在里面直接去更改的代码可以继续这样那个模板分配的模板,如果说只是一个典型的音视频转码的处理系统的话,这样完全可以满足的需求,甚至不需要改一行代码。
如果说有一些定制化的需求的话,可以通过直接在这里更改代码,保存之后可以直接在线进行调试。配置的函数的触发器,一旦上传了文件的话,可以做立马触发。当前下是一条日志都没有,等于 一次都没有被触发过。
在 Video input 的目标目录下面上传.MP4 结尾的这样文件,函数计算已经触发成功了,对应的函数计算的触发的日志也可以在这里可以看到。对应的函数的处理的相关的一些指标。如果说再上传这样的视频软件,上传成功有一定对应的处理时延,处理完成之后就可以在 Outlook 中可以看到,可以看到在通过大 约 22 秒左右的时间,开始时间到结束时间 22 秒时,处理完成了。
通过 demo 基本上了解到了函数计算在音视频领域里面的一些比较核心的价值,包括了免运维去帮助客户更专注业务逻辑开发以及在音视频这样的 CPU 内存密集型的这样场景下,它所发挥的高弹性、高可用和高性能的核心能力。