使用场景
案例
AI 互动课堂
通过录播真人教学视频结合 AI 技术进行线上直播互动教学。
上课前,根据教师的课程设置,将知识点讲解、互动提问、问题反馈和解答等信息录制成视频片段,上传到视频库。课堂中,通过云函数将已有的录播视频推送到 TRTC 房间进行直播。学生通过语音、触屏实现互动式学习。服务端通过 AI 技术,智能识别学生的实时语音和作答,并根据学生的表现,无缝切换教学片段,实时给予不同的反馈,从而提供个性化的教学体验。
“一起看”房间服务
游戏直播、秀场、体育赛事等直播类内容,可以通过云函数将 RTMP 直播流推送到 TRTC 房间,实时交流,带动热点。电影、音乐等点播类节目,可以通过云函数将媒体文件转换为在线媒体流输入至TRTC房间,增值服务,打造社区圈层。云函数一键触发、免运维、弹性伸缩等特性可以快速支撑实时互动娱乐社交应用的构建。云函数的可编程性,可以快速整合其他云服务及三方服务,扩展业务边界,高效创新玩法。
业务流程
本文为您介绍如何 使用 API 网关集成云函数,将已有的录播视频或者 RTMP 直播流推送到实时音视频 TRTC 房间进行直播,提供开箱即用、灵活便捷、可编程的在线媒体流输入能力。如您需开启推流直播的实时记录,可以选择使用 Redis,API 网关会将进度实时写入 Redis。工作流程如下图所示:
![img](https://qcloudimg.tencent-cloud.cn/image/document/199a45f2e0fa135dc38aadd390161ef4.png)
![img](https://qcloudimg.tencent-cloud.cn/image/document/199a45f2e0fa135dc38aadd390161ef4.png)
API 网关调用涉及的参数如下:
参数名称 | 类型 | 必选 | 描述 |
VideoSrc | String | 是 | 被推流的视频源,例如 https://test-123456789.cos.ap-shanghai.myqcloud.com/video/1.mp4 。 |
SdkAppId | Int | 是 | 应用 ID,用于区分不同 TRTC 应用。 |
RoomId | Int | 否 | 整型房间号 ID,用于在一个 TRTC 应用中唯一标识一个房间。 |
StrRoomId | String | 否 | 字符串房间号 ID,RoomId 与 StrRoomId 必须配置一项,如果 RoomId 与 StrRoomId 同时配置,则使用 RoomId。 |
Mode | String | 否 | vod:点播模式,即推流为某个录制好的文件,默认模式。 live:直播模式,即推流为 rtmp 直播源。 |
UserId | String | 是 | 推流用户 ID,用于在一个 TRTC 应用中唯一标识一个用户。 |
UserSig | String | 是 | 推流用户签名,用于对一个用户进行登录鉴权认证。 |
Redis | Boolean | 否 | 是否使用 Redis,默认为 false。 |
RedisHost | String | 否 | Redis 为 true 时,redis 的 host 地址。 |
RedisPort | Integer | 否 | Redis 为 true 时,redis 的访问端口号。 |
RedisPassword | String | 否 | Redis 为 true 时,redis 的访问密码。 |
说明
如果 Redis 值为 false,从 VideoSrc 视频源拉流进行直播推流,直播流将从最新开始。
如果 Redis 值为 true,对于同一个 VideoSrc 视频源,API 网关将先在 Redis 中查询是否有上一次直播流推流记录:
若存在记录,则恢复上一次推流。
若无记录,则重新开始推流。直播推流进度通过回调实时写入 Redis。
操作步骤
创建云函数
1. 登录 Serverless 控制台,进入函数服务页面。
2. 在“函数服务”页面上方选择北京地域,并单击新建进入新建函数页面,根据页面相关信息提示进行配置。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/bb5e8c86c93669cfa15af5504b99c1e4.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/bb5e8c86c93669cfa15af5504b99c1e4.png)
创建方式:选择模板创建。
模糊搜索:输入“TRTC直播推流”,并进行搜索。
单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
3. 单击下一步,根据页面相关信息提示进行配置。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/d8f26ac682605c4247e9534ad2b51ba5.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d8f26ac682605c4247e9534ad2b51ba5.png)
函数名称:默认填充。
异步执行:勾选以开启。开启后,函数将以异步执行模式响应事件,事件调用无需阻塞等待处理结果,事件将在被调用后进入异步执行状态。
状态追踪:勾选以开启。开启后,针对异步执行的事件,将开始记录响应事件的实时状态,并提供事件的统计、查询及终止服务,产生的事件状态数据将为您保留3天。
执行超时时间:可根据需要自行修改。
4. 配置 API 网关触发器,默认新建 API 服务,不开启集成响应。您也可以选择自定义创建,自定义创建时确保集成响应关闭。如下图所示:
![img](https://qcloudimg.tencent-cloud.cn/image/document/bd6cb4ddafcea109f2f5f36c09991798.png)
![img](https://qcloudimg.tencent-cloud.cn/image/document/bd6cb4ddafcea109f2f5f36c09991798.png)
5. 单击完成即可完成函数创建和 API 网关触发器创建。
6. 如需使用 Redis 实时记录推流进度,由于 Redis 只能私有网络访问,因此必须将云函数的 VPC 配置在与 Redis 在同一个私有网络下。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/4b31f7f27275075e27149e0c76d6967b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/4b31f7f27275075e27149e0c76d6967b.png)
创建 TRTC 应用
1. 登录实时音视频控制台,选择左侧导航栏中的开发辅助 > 快速跑通 Demo。
2. 填写 Demo 名称,单击创建完成应用创建。您可以根据自己的客户端选择模板试运行。
![](https://qcloudimg.tencent-cloud.cn/image/document/387bea5f28ec215cf01e224a830b2036.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/387bea5f28ec215cf01e224a830b2036.png)
测试函数功能
1. 使用 Postman 构造 HTTP 请求。示例如下:
{"SdkAppId": 1400000000,"StrRoomId": "98915abc","UserId": "user_55952144","Mode": "vod","UserSig": "eJwtzN0KgkAQBeB32dtCZqcd-6CbMMRYIrGiu6jcZAhL1NogevdMvxxxxxxxxxxxxxxxxxAIdENM*c27uLV*552dj6iNRQCiVGgdNfjtVFecilApABSg9OTTmXXFtOiciBIBBWy7xxxxxxxxRHbbjo-kFrN0UvOfuRH1tMyiDeLGcPu7ocxxxxxxxxxxx5uL7A0DEMb8_","Redis": false,"VideoSrc": "https://test-123456789.cos.ap-shanghai.myqcloud.com/video/1.mp4"}
如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/6f27fa252050bfa4247562e7b025ef54.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/6f27fa252050bfa4247562e7b025ef54.png)
2. 请求发送后会收到异步函数响应 “Async run task submitted”,此次函数的 RequstId 会通过 HTTP 头部信息中的 x-scf-reqid 返回。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/57a1444136291bd4cbbb334fa833efc7.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/57a1444136291bd4cbbb334fa833efc7.png)
4. 在“函数详情”页面中选择日志查询页签,可以查看到打印出的推流日志信息。
5. 切换至 实时音视频控制台,在“监控仪表盘”页面单击房间 ID,查看推流监控详情信息。如下图所示:
![](https://qcloudimg.tencent-cloud.cn/image/document/c6ec8160efe40fe39760d72f701c051d.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c6ec8160efe40fe39760d72f701c051d.png)
6. 如需在推流过程中停止推流,可以调用 终止异步函数接口 InvokeRequestId 参数停止推流(必须开启状态追踪)。
其中 InvokeRequestId 可从上述步骤2的响应头部信息 x-scf-reqid 中获取。