前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Serverless 云函数 + ffmpeg 实现音视频转码服务

使用 Serverless 云函数 + ffmpeg 实现音视频转码服务

原创
作者头像
Mason-Serverless
发布2020-07-22 12:09:31
5.2K1
发布2020-07-22 12:09:31
举报

Serverless 已经成为近期热度越来越高的技术,众所周知,Serverless 的核心是帮用户屏蔽了底层的资源、提供按需请求、按需使用、按需付费的一种全新服务,像腾讯云的云函数(SCF)和对象存储等都是 Serverless 化的服务。基于 Serverless 云函数,用户可以快速构建各种功能性的 REST API 服务,如 WEB 服务后台、APP 应用后台、小游戏的聊天服务、图片处理、音视频转码等。本文就以 API网关 + 云函数 + 对象存储等云产品,分享如何快速实现自定义的音视频转码服务。

核心价值

视频应用、社交应用等场景下,用户上传的图片、音视频的总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如:对于用户上传的视频短片,我们可以使用多个云函数对其分别处理,对应不同的清晰度(1080p、720p等),以满足不同场景下用户的需求,适应移动网络带宽较小且不稳定的特性。使用云函数来做的核心优势在于:

1.高效整合:凭借云函数(SCF)的强大联动能力,将视频上传、视频处理、图片处理、存储场景有机地整合为一体。

2.灵活处理:用户可以自定义转码函数,帮助客户快速搭建定制化任务处理能力,弥补当前单独云服务的功能盲点。

3.平滑迁移:可以把ffmpeg业务方便地从物理机、云主机或容器中移植到云函数。

4.成本低廉:云函数提供丰富的计量方式,帮忙用户获得显著的成本优势。

运行原理

使用云函数 + ffmpeg 和COS联动做音视频转码的运行原理:

运行原理
运行原理

优势对比

和容器服务等对比,使用云函数+ffmpeg 做音视频转码服务的优势和不足在于:

和自建容器服务对比
和自建容器服务对比

部署流程

前置条件

以广州地域为例:

  1. 提前在对象存储控制台上创建好COS Bucket,Bucket权限设置为公有读私有写
  2. (可选)提前在文件存储控制台上开通CFS服务(当视频文件大于500MB时需要用到),用于扩展云函数的本地存储空间。
  3. 登录访问管理控制台,新建云函数的运行角色,授予该角色COS的读写权限、CFS的读写权限,用于授权云函数访问相应服务。

CFS配置及使用文档可参考:挂载CFS文件系统。如果视频文件小于500MB,可以不用操作该步骤。

云函数运行角色使用说明可参考:创建函数运行角色

创建云函数

  • 登录云函数控制台,选择地域后,新建函数,选择运行环境Python3.6,搜索“转码”,选中模板函数后,下一步。
  • 在下一步中,点开高级设置:配置环境变量,并启用运行角色。

target_bucket:转码后的视频,上传到已创建好的对象存储bucket中。

target_path: 转码后的视频,上传到bucket的指定目录中。

运行角色:云函数在运行时,会使用运行角色换取临时秘钥,操作读取和写入COS Bucket的资源。

  • 下一步,完成函数创建。
  • 在函数侧边栏【触发器管理】,创建COS Bucket 触发器,如果用的同一个Bucket存储源视频和转码后的视频,一定要在触发器这里配置前缀过滤规则,如demo/。

(可选)配置CFS挂载

  • 如果已经开通了CFS挂载服务,则可以在侧边栏【函数管理】-》【函数配置】-》编辑,同时启用私有网络和文件系统挂载能力。
  • 如果启用了CFS挂载,则需要在代码中修改文件上传路径,注释掉76行代码,添加77行,把 ‘/tmp/new-' 改成 ‘/mnt/new-',如下所示:

测试功能

  • 到 COS 控制台,对应的 Bucket 目录下,上传视频文件,并到对应的转码目录下查看,是否生成压缩的视频文件。

根据视频大小不同,压缩时间也不同,如果视频过大,压缩时间会比较久,需要较长的时间才能查看到新视频。

  • 到云函数控制台查看函数运行日志,如下:
  • 在函数控制台上还可以查看监控和配置告警:

扩展能力

基于本demo,还可以扩展支持自动化CDN刷新/预热的能力,比如转码后的视频在回传COS Bucket时,还可以触发新函数执行CDN刷新/预热功能(该功能可以在COS控制台上一键开启)。

ffmpeg是非常强大的转码工具,除了转码、视频压缩等,还可以做视频切片等,通过修改代码里的命令参数,可以非常方便的实现该能力。甚至和云上的AI接口结合,实现视频加字幕等功能。

感兴趣的同学还可以借助云函数的高并发能力,实现快速转码或者切片功能。如函数A做任务调度,函数B做实际的转码/切片工作。这里可以借助 CFS 挂载能力,轻松实现跨函数的文件共享功能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 核心价值
  • 运行原理
  • 优势对比
  • 部署流程
    • 前置条件
      • 创建云函数
        • (可选)配置CFS挂载
        • 测试功能
        • 扩展能力
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档