本项目是轻松构建基于 Serverless 架构的弹性高可用音视频处理系统 的示例工程
该工程示例已经上线到函数计算应用中心,免费开通函数计算 即可在控制台应用中心 -> Video Transcoder 新建应用即查看到 。
如下图所示, 假设用户上传一个 mov 格式的视频到 OSS, OSS 触发器自动触发函数执行, 函数调用 FnF 执行,FnF 同时进行 1 种或者多种格式的转码(由 s.yaml 中的 DST_FORMATS 参数控制), 本示例配置的是同时进行 mp4, flv, avi 格式的转码。
您可以实现如下需求:
-
一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等。
-
当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件, 同时每次文件转码成多种格式也是并行。
-
结合 NAS + 视频切片, 可以解决超大视频的转码, 对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大视频的转码速度。
P.S. 当您想要仅在一个简单的函数中直接完成视频处理逻辑时,可以参考简单视频处理系统示例
git clone https://github.com/awesome-fc/fc-fnf-video-processing.git
- 运行
s deploy -t ram.yaml
- 此时可以在命令行看到打印出的两个 role 的 ARN
- 将获取的 ARN 复制到
s.yaml
对应位置中
- 将配置中 role 的 xxx 替换为步骤2中获得的 ARN
- 将
bucket-demo
替换为自己的 bucket - 将日志工程
sls-transcode-demo
替换为自己的日志工程,全局共有4处
运行下列命令,进行服务的部署。其中,包含 1 个日志工程,1 个函数工作流,以及 5 个函数。
s deploy
第1步: 在函数工作流控制台开始 video-demo 的执行,input 如下,替换 {your-bucket-name}:
{
"oss_bucket_name": "{your-bucket-name}",
"video_key": "fnf_video/inputs/fc-official-short.mov",
"output_prefix": "fnf_video/outputs/fc/1",
"segment_time_seconds": 15,
"dst_formats": ["flv", "mp4"]
}
第 2 步: 在控制台观察流程执行
效果示意图