tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

SCF + TRTC 实现混流录制

PDF
聚焦模式
字号
最后更新时间: 2024-12-02 21:04:04

使用场景

案例

在线教育

在线教育的场景中,可以实现在上课的过程中将老师的音视频和学生的音视频进行合成录制,并且加入上课过程中的其他素材与人工智能分析,在真实还原上课场景的同时增加一些业务功能,增加回放视频观看效果。

社交直播

在直播过程,可以采取混流录制的方法将多流合成、旁路审核,从而降低审核的成本,并且根据国家的要求将混流之后录制文件存储,应对监管要求。

金融监管

在线开户,金融双录等场景中,以全局视角录制全部交易过程,并进行存档保留,满足后续服务或者监管要求。

其他

客户服务、投诉等场景,可以实时启动录制,录制服务过程与投诉内容,便于优化服务质量,排查投诉合理性,提升投诉处理效率。

业务流程

本文为您介绍如何使用 API 网关集成云函数,将实时音视频 TRTC 房间的主播音视频进行混流录制,录制完毕后上传到COS存储,提供开箱即用、灵活便捷、可编程的直播录制能力。云函数默认提供 512MB 内存来存储录制文件,如果您需要更大的存储空间,可以选择使用 CFS 挂载能力。工作流程如下图所示:

img


录制规则如下:
最多只会录制6路音视频流。
当房间低于6个人时,会自动混流后续加入的用户。当房间超过6个人时,只会录制最先进房间的6个人。
IsReserve 为 true 时,在用户退出房间后,该用户流仍然在混流任务中,混流任务中将以最后一帧画面和静音补全流。IsReserve 为 false 时,在用户退出房间后,该用户流将从混流任务中删除,如果后续有新用户进入,则以新用户的流加入混流中。
API 网关调用涉及的参数如下:
参数名称
类型
必选
描述
SdkAppId
Int
应用 ID,用于区分不同 TRTC 应用。
RoomId
Int
整型房间号ID,用于在一个 TRTC 应用中唯一标识一个房间。
StrRoomId
String
字符串房间号 ID,RoomId 与 StrRoomId 必须配置一项,如果 RoomId 与 StrRoomId 同时配置,使用 RoomId。
UserId
String
录制用户 ID,用于在一个 TRTC 应用中唯一标识一个用户。
UserSig
String
录制用户签名,用于对一个用户进行登录鉴权认证。
CosConfig
cosConfig
COS 存储配置。用于存储录制文件。
Callback
String
录制结束后的回调地址,并使用 POST 方式进行回调。
Mode
String
10:混流音频,默认模式。输出 MP3 格式。
11:混流视频。输出 MP4 格式。
12:混流音视频,输出 MP4 格式。
IsReserve
Boolean
false,主播退出房间,自动删除混流中的流。
true,主播退出房间,混流任务中将以最后一帧画面和静音补全流。默认值为 true。
CosConfig 涉及的参数如下:
参数名称
类型
必选
描述
SecretId
String
腾讯云账号的 SecretId。详情请参见 访问管理
SecretKey
String
腾讯云账号的 SecretKey。详情请参见 访问管理
Region
String
COS 所在区。例如 ap-guangzhou
Bucket
String
桶名称。例如 susu-123456789
Path
String
桶内路径。例如 /test,根目录为 /
说明:
UserId 为指定用户 ID, 多次请求 API 网关不保证幂等。
CosConfig 中如果不配置 SecretId 与 SecretKey,函数访问 COS 时将使用运行角色 SCF_ExecuteRole 权限去执行。
停止录制的触发条件:
TRTC 房间被销毁。当 TRTC 房间超过300s没有主播,房间会自动销毁。
主动调用移除用户接口,将录制观众踢出房间。
使用 RoomId 的用户停止录制,需要调用 移除用户 接口。
使用 StrRoomId 的用户停止录制时,需要调用 移除用户(字符串房间号)接口。
停止录制后,函数返回数据格式如下:
参数名称
类型
必选
描述
SdkAppId
String
应用 ID。
RoomId
String
整型房间 ID。
UserId
String
录制用户 ID。
StrRoomId
String
字符串房间 ID。
Files
Array
[{},{},{},{}]
说明:
如果配置了 Callback,停止结束后,云函数将以 POST 方式将返回数据传递给回调地址。
Files 数组中每一项为 JSON Object,如下:
参数名称
类型
必选
描述
UserId
String
被录制的用户 ID。
RecordFile
String
录制文件最后上传到 COS 的 URL。
Status
Int
0:失败。
1:成功。
Message
String
录制任务的执行结果。例如,录制失败、转码失败、写入 COS 失败等。

操作步骤

创建云函数

1. 登录云函数控制台,选择左侧导航栏中的 函数服务
2. 在“函数服务”页面上方选择广州地域,并单击新建进入新建函数页面,根据页面相关信息提示进行配置。如下图所示:


创建方式:选择模板创建
模糊搜索:输入“TRTC”进行搜索,选择混流音视频录制。 单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
3. 单击下一步,根据页面相关信息提示进行配置。如下图所示:


函数名称:默认填充。
异步执行:勾选以开启。开启后,函数将以异步执行模式响应事件,事件调用无需阻塞等待处理结果,事件将在被调用后进入异步执行状态。
状态追踪:勾选以开启。开启后,针对异步执行的事件,将开始记录响应事件的实时状态,并提供事件的统计、查询及终止服务,产生的事件状态数据将为您保留3天。
执行超时时间:可根据需要自行修改。
运行角色:默认使用 SCF_ExecuteRole 作为运行角色,并授予 QcloudCOSFullAccessQcloudCFSFullAccess 访问权限。
4. 配置 API 网关触发器,默认新建 API 服务,不开启集成响应。您也可以选择自定义创建,自定义创建时确保集成响应关闭。如下图所示:


5. 单击完成即可完成函数创建和 API 网关触发器创建。
6. 如需使用 CFS 挂载能力,由于 CFS 只能私有网络访问,因此必须将云函数的 VPC 配置在与 CFS 在同一个私有网络下。如下图所示:


说明:
启用 CFS,需要将环境变量 CFS_PATH 设置为本地目录,例如 /mnt/audio/

创建 TRTC 应用

1. 登录实时音视频控制台,选择左侧导航栏中的开发辅助 > 快速跑通 Demo
2. 填写 Demo 名称,单击创建完成应用创建。您可以根据自己的客户端选择模板试运行,例如 跑通Demo(桌面浏览器)



测试函数功能

1. 参考 跑通Demo(桌面浏览器),用户user_00001与user_00002进入一个 TRTC 房间。
2. 使用 Postman 构造 HTTP 请求。其中 roomId 为已创建 TRTC 应用的房间号,userId 为随机另一个用户 ID(必须唯一)。如下图所示:
{
"SdkAppId": 1400000000,
"RoomId": 43474,
"UserId": "user_55952145",
"Mode":"12",
"UserSig": "eJwtzNEKgkAUBNB-2efQ3e3eUqG3tMCKJJEIIxxxxxxxxxxxxxxxhvmweLWzGlUxj0mLs1GXKVf3mgrq*GFUdUR0UQrAYWDyW6Y15cwTwDm4UkxF36iXpkq1joiSc9xxxxxxxxxxxxx-S*CZeOk9sHfnEhCwlUW*fE4oWusw3dULlJ7HoSJ2e6d9fM8Y98fxUAzWA__",
"CosConfig": {
"Region": "ap-shanghai",
"Bucket": "test-123456789",
"Path": "/trtc"
},
"IsReserve":false,
"Callback":"https:xxxxxxxx.com/post/xxx"
}
如下图所示:


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


4. 在云函数控制台 函数服务页面中,单击上述 创建云函数 步骤中创建的云函数名称,进入“函数详情”页面。
5. 在“函数详情”页面中选择日志查询页签,可以查看到打印出的录制日志信息。如下图所示:


6. 切换至 实时音视频控制台,在“监控仪表盘”页面单击房间 ID,查看所有在房间中的用户,其中一个观众即为录制观众。
7. 如需在录制过程中停止录制,可以调用 移除用户 或者 移除用户(字符串房间号) 将用户提出房间。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈