查看原文
其他

使用 Serverless 云函数实现 TRTC 单流 / 混流录制

李永涛 腾讯云云函数 2022-03-18

01.

什么是单流录制 / 混流录制?

1. 单流录制模式(默认录制模式)

分开录制频道内每个 UID 的音频流和视频流。每个 UID 均有其对应的音频文件和视频文件。


2. 混流录制模式

频道内所有或指定 UID 的音视频混合录制为一个音视频文件;或频道内所有或指定 UID 的音频混合录制为一个纯音频文件,所有或指定 UID 的视频混合录制为一个纯视频文件。



02.

Serverless 云函数在单流 / 混流录制中

最佳实践场景

1. 场景一:直播回放

  • 核心诉求

  1. 国家监管要求,直播过程要生成回放。

  2. 优质资源二次利用,形成点播文件多次分发。

  3. 随时生成回放,用户可以拖拽重复回看感兴趣商品


  • 云函数 SCF 解决方案

云函数录制可以在直播直播过程中 实时生成回放文件根据用户需求可以触发函数片段录制下来,满足需求的同时降低录制成本。


2. 场景二:游戏精彩片段

  • 核心诉求

游戏过程中的精彩片段实时录制并且进行分享。

  • 云函数 SCF 解决方案

1. 利用云函数实时录制直播内容,生成 ts 文件存在指定位置。

2. 精彩片段触发之后,读取触发点前几个片段,调用函数资源池,快速生成精彩片段。


3. 场景三:定向用户录制

  • 核心诉求

多人连麦场景下,希望将指定视频流录制存储下来,比如狼人杀场景,可以将优质玩家的内容录制下来,在游戏社区中进行分享。

  • 云函数 SCF 解决方案

可以调用函数单流录制功能,将指定 uid 的用户数据进行录制,生成精彩片段,指定设置触发形式。



03. 

Serverless 云函数的实现价值

1. 用户可以自定义上传地址,不需要与存储地址强行绑定。目前市面上 rtc 自带的录制功能大部分需要指定云存储供应商。

2. 录制结束之后可以使用云函数庞大资源池进行快速转码,短时间内生成回放,满足对于实时性的要求。

3. 提供多种触发形式,可与客户的业务进行强结合。



04.

云函数 SCF 进行单流录制 Demo 演示


以上为大家介绍了 Serverless 云函数在单流 / 混流录制中的业务场景价值,接下来以单流录制为例,通过简单的 Demo 演示来讲解如何使用 API 网关集成云函数 SCF 来进行单流录制,工作流程如下:

1. API 网关调用涉及参数

2. cosConfg 涉及参数

  • 如果 userId 为 0,则会随机生成一个 userId。如果 userId 为指定用户 ID, 多次请求 API 网关不保证幂等。

  • cosConfig 中如果不配置 secretId 与 secretKey,函数访问 COS 时将使用运行角色 SCF_ExecuteRole 权限去执行。

  • 如果要查询函数运行过程的状态,参考异步事件管理接口。


3. 创建云函数

3.1 登录云函数控制台,选择左侧导航栏中的「函数服务」,单击「新建」进入新建函数页面,根据页面相关信息提示进行配置。如下图所示:

  • 云函数控制台:https://console.cloud.tencent.com/scf

  • 创建方式:选择「模板创建」。

  • 模糊搜索:输入「单流音频录制」,并进行搜索。单击模板中的「查看详情」,即可在弹出的「模板详情」窗口中查看相关信息,支持下载操作。


3.2 单击「下一步」,根据页面相关信息提示进行配置。如下图所示:

  • 函数名称:默认填充。

  • 异步执行:勾选以开启。开启后,函数将以异步执行模式响应事件,事件调用无需阻塞等待处理结果,事件将在被调用后进入异步执行状态。

  • 状态追踪:勾选以开启。开启后,针对异步执行的事件,将开始记录响应事件的实时状态,并提供事件的统计、查询及终止服务,产生的事件状态数据将为您保留 3 天。

  • 执行超时时间:可根据需要自行修改。


3.3 配置 API 网关触发器,默认新建 API 服务,不开启集成响应。您也可以选择自定义创建,自定义创建时确保集成响应关闭,单击「完成」即可完成函数创建和 API 网关触发器创建。如下图所示:


3.4 如需使用 CFS挂载能力,由于 CFS只能私有网络访问,因此必须将云函数的 VPC 配置在与 CFS 在同一个私有网络下。如下图所示:


4. 创建 TRTC 应用

4.1 登录实时音视频控制台,选择左侧导航栏中的「开发辅助」-->「快速跑通 Demo

4.2 填写 Demo 名称,单击「创建」完成应用创建。您可以根据自己的客户端选择模板试运行。

  • 实时音视频控制台地址:https://console.cloud.tencent.com/trtc/monitor


5. 测试函数功能

5.1 使用 Postman 构造 HTTP 请求。如下图所示:


5.2 请求发送后会收到异步函数响应 “Async run task submitted”,此次函数的 RequstId 会通过 HTTP 头部信息中的 x-scf-reqid 返回。如下图所示:     


5.3 在云函数控制台「函数服务」页面中,点击上述 「1. 创建云函数」步骤中创建的云函数名称,进入「函数详情」页,查看到打印出的推流日志信息。如下图所示:


5.4 切换至实时音视频控制台,在「监控仪表盘」页面单击房间 ID,查看推流监控详情信息。如下图所示:  


5.5 如需在录制过程中停止录制,可以调用「移除用户接口将用户提出房间。

  • 移除用户接口:https://cloud.tencent.com/document/api/647/40496


05.

「页面录制」内测申请

《使⽤ Serverless 云函数和 Headless Chrome 进行实时渲染录制合流》一文中和大家讲述了在线教育场景中的录制需求痛点,并推出全新解决方案: Headless Chrome 页面录制。⽬前已经有内部团队在使⽤,如果您也想参与此⽅案的测试,识别下方 👇 二维码,完成内测表单填写,我们将在 1-3 个工作日与联系,感谢您的关注与支持。


06.

音视频实时互动 Serverless 系列解决方案



推荐阅读

One More Thing


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

  • GitHub: github.com/serverless

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

点击「阅读原文」申请内测 「腾讯云 TRTC & 云函数 SCF 录制方案」。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存