有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

应用场景

AI 互动课堂

通过录播真人教学视频结合 AI 技术进行线上直播互动教学。
上课前,根据教师的课程设置,将知识点讲解、互动提问、问题反馈和解答等信息录制成视频片段,上传到视频库。
课堂中,通过云函数将已有的录播视频推送到 TRTC 房间进行直播。学生通过语音、触屏实现互动式学习。服务端通过 AI 技术,智能识别学生的实时语音和作答,并根据学生的表现,无缝切换教学片段,实时给予不同的反馈,从而提供个性化的教学体验。

“一起看” 房间服务

游戏直播、秀场、体育赛事等直播类内容,可以通过云函数将 RTMP 直播流推送到 TRTC 房间,实时交流,带动热点。
电影、音乐等点播类节目,可以通过云函数将媒体文件转换为在线媒体流输入至 TRTC 房间,增值服务,打造社区圈层。
云函数一键触发、免运维、弹性伸缩等特性可以快速支撑实时互动娱乐社交应用的构建。
云函数的可编程性,可以快速整合其他云服务及三方服务,扩展业务边界,高效创新玩法。

操作场景

本文为您介绍如何 使用 API 网关调用云函数,将已有的录播视频或者 RTMP 直播流推送到实时音视频 TRTC 房间进行直播。如您需开启推流直播的实时记录,可以选择使用 Redis,API 网关会将进度实时写入 Redis。工作流程如下图所示:
img


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


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


函数名称:默认填充。
异步执行:勾选以开启。开启后,函数将以异步执行模式响应事件,事件调用无需阻塞等待处理结果,事件将在被调用后进入异步执行状态。
状态追踪:勾选以开启。开启后,针对异步执行的事件,将开始记录响应事件的实时状态,并提供事件的统计、查询及终止服务,产生的事件状态数据将为您保留3天。
执行超时时间:可根据需要自行修改。
注意:
如果您使用的音视频源存储在对象存储 COS,请确保云函数的地域参数与源文件在同一地域,否则将产生 流量费用
4. 配置 API 网关触发器,默认新建 API 服务,不开启集成响应。您也可以选择自定义创建,自定义创建时确保集成响应关闭。如下图所示:


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



创建 TRTC 应用

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



测试函数功能

1. 构造 HTTP POST 请求,具体请求 body 参考如下:
{
"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"
}
以 postman 为例:如下图所示:


说明:
已创建的 TRTC 直播推流函数的公网地址可在触发管理 API 网关触发 > 访问路径 下获取。
2. 请求发送后会收到异步函数响应 “Async run task submitted”,此次函数的 RequstId 会通过 HTTP 头部信息中的 x-scf-reqid 返回。如下图所示:


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


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


6. 如需在推流过程中停止推流,可以调用 终止异步函数接口 InvokeRequestId 参数停止推流(必须开启状态追踪)。 其中 InvokeRequestId 可从上述步骤2的响应头部信息 x-scf-reqid 中获取。