您可以通过函数计算Serverless工作流打造弹性高可用的Serverless音视频处理系统。此外,本文还会从性能、成本和工程效率等方面介绍Serverless音视频处理系统和传统方案的差异。同时,介绍Serverless音视频处理系统的优势和适用场景。

音视频处理新需求

在视频点播解决方案中,视频转码是最消耗计算力的一个子系统,虽然您可以使用云上专门的转码服务,但在某些场景下,您仍会选择自己搭建转码服务,例如:
  • 需要更弹性的视频处理服务。

    例如,已经在虚拟机或容器平台上基于FFmpeg部署了一套视频处理服务,但想在此基础上实现更弹性、更高可用的服务。

  • 需要并行处理多个文件。

    例如,有并发处理大量视频的需求,需要同时并行处理多个文件。

  • 需要批量快速处理多个超大的视频。

    例如,每周五定时产生几百个4 GB以上1080P的大视频,需要几小时内处理完。

  • 需要处理更高级的自定义处理需求。

    例如,视频转码完成后,需要记录转码详情到数据库,或自动将热度很高的视频预热到CDN上缓解源站压力。

  • 需要转换音频格式、自定义采样率或音频降噪等。
  • 需要简单的转码或较轻量的需求时。

    例如,获取OSS上视频前几帧的GIF、获取音视频的时长,此时您自己搭建的成本会更低。

  • 需要直接读取源文件进行处理。

    例如,当您的视频源文件存放在NAS或ECS云盘上时,您需要自建服务直接读取源文件进行处理,而不需要将他们再次迁移至OSS。

  • 需要将视频转换为其他格式,然后在此基础上增加其他新的需求。

    例如,将视频进行转码、加水印和生成视频首页的GIF,然后在此基础上增加新的需求,例如调整转码参数、发布新功能时对在线服务无影响。

如果您的视频处理系统有上述需求,或您期望实现一个弹性、高可用、低成本、免运维和灵活支持任意处理逻辑的视频处理系统,您可以参考下文介绍的最佳实践方案。

典型解决方案

随着计算机技术和网络的发展,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业的青睐。当前云计算平台厂商的产品线不断成熟完善,如果想要搭建视频点播类应用,直接上云会扫清硬件采购、技术等各种障碍。以阿里云为例,典型的解决方案如下。buhuosanyinshipinduanyunliant

在该解决方案中,对象存储OSS可以支持海量视频存储,采集上传的视频被转码以适配各种终端、CDN加速终端设备播放视频的速度。此外还有一些内容安全审查需求,例如鉴黄、鉴恐等。

Simple视频处理系统

如果您需要对视频进行简单的处理,方案架构图如下。zhuomianosschufaqisimple

当您上传一个视频到OSS时,OSS触发器自动触发函数执行,函数调用FFmpeg进行视频转码,并且将转码后的视频保存回OSS。关于Simple视频处理系统的Demo及部署步骤,请参见Simple视频处理系统。OSS触发器的具体信息,请参见OSS触发器概述

视频处理工作流系统

为了加快大视频的转码速度或完成各种复杂的组合操作,您可以通过Serverless工作流编排函数实现功能强大的视频处理系统。方案架构图如下。yinshipinshilichangjingheserverlessgongzuoliu
例如,您上传一个MOV格式的视频到OSS,OSS触发器自动触发函数执行,然后函数调用Serverless工作流,同时进行一种或多种格式的转码。转码的目标格式由您触发的函数环境变量DST_FORMATS参数控制,因此可以实现以下需求:
  • 一个视频文件可以同时被转码成各种格式和其他自定义处理,例如增加水印或在处理后更新信息到数据库等。
  • 当有多个文件同时上传到OSS时,函数计算会自动伸缩,并行处理多个文件,同时将文件并行转码成多种格式。
  • 结合NAS和视频切片,可以解决超大视频的转码。对于每个视频,都需先进行切片处理,然后并行转码切片,最后合成。通过设置合理的切片时间,可以提高较大视频的转码速度。
    说明 视频切片是指将视频流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息。

方案的部署步骤,请参见视频处理工作流

Serverless方案优势

提高工程效率

对比项Serverless方案自建服务
基础设施需要您采购和管理。
开发效率只需专注业务逻辑的开发,配合Serverless Devs编排和部署资源。除了必要的业务逻辑开发,还需要您自己建立相同的线上运行环境,包括相关软件的安装、服务配置、安全更新等一系列问题。
并行和分布式视频处理通过Serverless工作流资源编排即可实现多个视频的并行处理和单个大视频的分布式处理,稳定性和监控交由云平台。需要很强的开发能力和完善的监控系统来保证稳定性。
学习上手成本会编写对应语言的函数代码和熟悉FFmpeg使用即可。除了编程语言开发能力和熟悉FFmpeg外,可能还需要使用K8s和云服务器ECS,需要了解更多的产品、名词和参数意义。
项目上线周期预计3人天(开发调试2人天和压测观察1人天)。在具体业务逻辑外耗费大量的时间和人力成本,保守估计大约30人天,包括硬件采购、软件和环境配置、系统开发、测试、监控报警和灰度发布系统等。

弹性伸缩免运维

内容项Serverless方案自建服务
弹性高可用函数计算系统具有毫秒级弹性伸缩,可以快速实现底层扩容以应对峰值压力,免运维,转码性能优异。需要自建负载均衡SLB,弹性伸缩、扩容缩容速度较函数计算慢。
监控报警查询提供更细粒度的Serverless工作流流程执行和函数执行情况。同时,可以查询每次函数执行的Latency和日志等,更加完善的报警监控机制。弹性伸缩或容器级别的Metrics。

转码性能优势

假设视频为89s的MOV格式的文件,云服务将MOV转为MP4的普通转码需要消耗的时间为188s,将这个参考时间记为T。则性能加速百分比计算公式如下:

性能加速百分比=T÷函数计算转码耗时

视频切片时间(s)函数计算转码耗时(s)性能加速百分比(%)
45160117.5
25100188
1570268.6
1045417.8
535537.1
说明 上表中的性能加速百分比仅适用于弹性实例和性能实例,当您的示例场景是GPU实例时,请参见音视频处理最佳实践

成本低

在某些实际场景中,函数计算在视频处理上的成本竞争力更好。即使和云厂商视频转码服务单价对比,本方案仍有很强的成本竞争力。

下文中选用点播视频中最常用的两个格式MP4和FLV之间进行相互转换,经实验验证,函数内存设置为3 GB,基于该方案从MP4转码为FLV的费用概览表如下。

表 1. MP4转FLV
分辨率速率帧率函数计算转码耗费时间函数计算转码费用某云视频处理费用成本下降百分比
标清640*480889 KB/s2411.2s0.0037322880.03288.3%
高清1280*7201963 KB/s2420.5s0.006831420.06589.5%
超清1920*10803689 KB/s2440s0.01332960.12689.4%
4K 3840*216011185 KB/s24142s0.047320080.55691.5%
表 2. FLV转MP4
分辨率速率帧率函数计算转码耗费时间函数计算转码费用某云视频处理费用成本下降百分比
标清640*480712 KB/s2434.5s0.011496780.03264.1%
高清1280*7201806 KB/s24100.3s0.0334240.06548.6%
超清1920*10803911 KB/s24226.4s0.07544550.12640.1%
4K 3840*216015109 KB/s24912s0.303914880.55645.3%

成本下降百分比=(某云视频处理费用-函数计算转码费用)÷某云视频处理费用

某云视频处理计费使用普通转码,转码时长不足一分钟,按照一分钟计算,这里计费采用的是2分钟,即使采用1.5分钟计算,成本下降百分比基本在10%以内浮动。

从上表可以看出,基于函数计算Serverless工作流的方案在计算资源成本上对于计算复杂度较高的FLV格式转MP4格式还是计算复杂度较低的MP转FLV,都具有很强的成本竞争力。根据实际经验,往往成本下降比上表列出来的更加明显,理由如下:
  • 测试视频的码率较高,实际上很多场景绝大部分都是标清或流畅视频的转码场景,码率也比测试视频低,此时计算量变小,函数计算执行时间短,费用会降低,但是通用的云转码服务计费是不变的。
  • 很多视频分辨率在通用的云转码服务时计费是有很大损失的,例如转码的视频是856*480或1368*768,都会进入云转码服务的下一档计费单价,例如856*480进入1280*720高清转码计费档,1368*768进入1920*1080超清转码计费档,单价基本是跨越式上升,但是实际真正的计算量增加可能不到30%,而函数计算则是真正能做到按量付费的。

操作部署

前提条件

操作步骤

方案优点

拥有函数计算和Serverless工作流两个产品的优势

  • 无需采购和管理服务器等基础设施,只需专注视频处理业务逻辑的开发,大幅缩短项目交付时间、减少人力成本。
  • 提供日志查询、性能监控、报警等功能,可以快速排查故障。
  • 以事件驱动的方式触发响应请求。
  • 免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异。
  • 较低成本。

相较于通用的转码处理服务的优点

  • 超强自定义,对用户透明,基于FFmpeg或其他音视频处理工具命令快速开发相应的音视频处理逻辑。
  • 一键迁移原基于FFmpeg自建的音视频处理服务。
  • 弹性更强,可以保证有充足的计算资源为转码服务,例如每周五定期产生几百个4 GB以上的1080P大视频,但是需要几小时内全部处理。
  • 音频格式的转换或各种采样率自定义、音频降噪等功能。例如专业音频处理工具AACgain和MP3Gain。
  • 可以和Serverless工作流完成更加复杂、自定义的任务编排。例如视频转码完成后,记录转码详情到数据库,同时自动将热度很高的视频预热到CDN上,从而缓解源站压力。
  • 更多方式的事件驱动,例如可以选择OSS自动触发,也可以根据业务选择MNS消息触发。
  • 在大部分场景下具有很强的成本竞争力。

相比于其他自建服务的优点

  • 毫秒级弹性伸缩,弹性能力超强,支持大规模资源调用,可弹性支持几万核的计算力,例如1万节课半个小时内完成转码。
  • 只需要专注业务逻辑代码即可,原生自带事件驱动模式,简化开发编程模型,同时可以达到消息,即音视频任务,处理的优先级,可大大提高开发运维效率。
  • 函数计算采用3AZ部署,安全性高,计算资源也是多AZ获取,能保证每位使用者需要的算力峰值。
  • 开箱即用的监控系统,可以多维度监控函数的执行情况,根据监控快速定位问题,同时给您提供分析能力,例如视频的格式分布、Size分布等。
  • 在大部分场景下具有很强的成本竞争力,因为函数计算是真正的按量付费,计费粒度在百毫秒,可以理解为CPU的利用率为100%。

常见问题

  • 如果已经在虚拟机或容器平台上基于FFmpeg部署了一套视频处理服务,能否在此基础上让它更弹性,拥有更高的可用性?

    如本文所示,在虚拟机或容器平台上基FFmpeg的服务可以轻松切换到函数计算,FFmpeg相关命令可以直接移植到函数计算,改造成本较低,同时,继承函数计算弹性高可用性的特性。

  • 有并发处理大量视频的需求时,如何操作?

    部署方案,请参见视频处理工作流系统。当有多个文件同时上传到OSS时,函数计算会自动伸缩,并行处理多个文件。更多信息,请参见视频处理工作流系统压测

  • 有很多超大的视频需要批量快速处理完,例如每周五定期产生几百个4 GB以上的1080P大视频,需要当天几小时内全部处理完时,如何操作?

    可以通过控制分片的大小,使每个大视频都有足够多的计算资源参与转码计算,大大提高转码速度。部署方案,请参见视频处理工作流系统压测

  • 有更高级的自定义处理需求,例如视频转码完成后,需要记录转码详情到数据库,或在转码完成后,自动将热度很高的视频预热到CDN上,从而缓解源站压力时,如何操作?

    部署方案,请参见视频处理工作流系统。处理中可以做一些自定义的操作,或基于此流程再做一些额外处理等,例如再增加后续流程,或最开始增加预处理等。

  • 自定义视频处理流程中可能会有多种操作组合,例如转码、加水印和生成视频首页GIF。如果需要后续为视频处理系统增加新需求,例如调整转码参数,并且希望新功能发布上线对在线服务无影响时,如何操作?

    部署方案,请参见视频处理工作流系统Serverless工作流只负责编排调用函数,因此只需要更新相应的处理函数即可,同时函数有版本和别名功能,更好地控制灰度上线。更多信息,请参见版本

  • 只有简单的转码需求,或是一些极其轻量的需求,例如需获取OSS上视频前几帧的GIF、获取音视频的时长,自己搭建成本更低时,如何操作?

    函数计算可以解决自定义问题,只需要在代码中快速执行几个FFmpeg的命令即可完成需求。典型示例工程,请参见fc-oss-ffmpeg

  • 视频源文件存放在NAS或ECS云盘上,希望自建服务可以直接读取源文件处理,而不需要将他们再迁移到OSS时,如何操作?

    函数计算可以挂载NAS,直接处理NAS中的文件。更多信息,请参见配置NAS文件系统