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

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 录制方案」。