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


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
00:单流音频,输出 MP3 格式。默认模式。
01:单流视频,输出 MP4 格式。
02:单流音视频,输出 MP4 格式。
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 服务,不开启集成响应。您也可以选择自定义创建,自定义创建时确保集成响应关闭。如下图所示:
img


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


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

创建 TRTC 应用

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



测试函数功能

1. 创建 TRTC 应用 并进入应用。
2. 使用 Postman 构造 HTTP 请求。其中 roomId 为已创建 TRTC 应用的房间号,userId 为随机另一个用户 ID(必须唯一)。示例如下:
{
"SdkAppId": 1400000000,
"RoomId": 43474,
"UserId": "user_55952145",
"Mode": "02",
"UserSig": "eJwtzNEKgkAUBNB-2efQ3e3eUqG3tMCKJJEIIxxxxxxxxxxxxxxxhvmweLWzGlUxj0mLs1GXKVf3mgrq*GFUdUR0UQrAYWDyW6Y15cwTwDm4UkxF36iXpkq1joiSc9xxxxxxxxxxxxx-S*CZeOk9sHfnEhCwlUW*fE4oWusw3dULlJ7HoSJ2e6d9fM8Y98fxUAzWA__",
"CosConfig": {
"Region": "ap-shanghai",
"Bucket": "test-123456789",
"Path": "/trtc"
}
}
如下图所示:


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


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


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

帮助和支持

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

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

文档反馈