}
4. 请求响应成功后,返回录制任务信息。
{ "app_id": "5ff9701f2346968bb306cb43", "create_time": "2021-04-21T10:51:55Z", "is_record_audio": true,
"job_id": "607f87cf00d861eeefffa6c88054cdab", "job_unique_id": "a77bb33dbdc948d8", "max_idle_time": 30,
"push_param": { "rtmp_urls": null },
"record_files": null, "record_param": {
"record_rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab"
},
"resolution_policy": "DOWNWARD", "resolution": "1280*720",
"room_id": "room001",
"start_time": "2021-04-21T10:51:55Z", "state": "INIT",
"stop_time": "0001-01-01T00:00:00Z",
"stream_name": "s_607f87cf00d861eeefffa6c88054cdab_room001_user001", "update_time": "2021-04-21T10:51:55Z",
"user_id": "user001",
"video_type": "CAMERASTREAM"
}
步骤7 SparkRTC房间结束音视频互动后,您可以在配置的OBS桶中获取录制文件。
----结束
4.2 示例 2:创建合流录制任务
场景描述
4.1 示例1:创建单流录制任务已介绍了如何将房间中的每一个用户的音视频流分别录 制成独立的文件。若您需要将房间中的多个单流用户录制成一个文件,您可以参考此 章节内容调用SparkRTC API进行合流录制。
前提条件
● 已获取需要使用的SparkRTC服务的终端节点rtc-api.myhuaweicloud.com。
● 已创建用于存储录制文件的OBS桶。可以通过调用OBS 创建桶API进行创建,并 在SparkRTC控制台完成OBS桶授权。
API 参考 4 应用示例
总体流程
1. 获取Token
2. 创建应用
3. 创建录制规则
4. 配置录制回调
5. 终端用户加入房间
6. 创建合流录制任务
操作步骤
步骤1 获取用户Token,用于调用SparkRTC接口时进行认证鉴权。
在“我的凭证”页面获取
username
、password
、domainname
,调用如下接口获取 Token。详细信息请参见3.1 构造请求。POST https://iam.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
{ "auth": { "identity": { "methods": [
API 参考 4 应用示例
],
步骤2 调用创建应用接口创建SparkRTC应用。
1. 选择POST请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps
2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
3. Request Body中传入如下参数:
{ "app_name" : "rtctest"
}
4. 请求响应成功后,返回已创建应用的ID。
{ "app_id": "5ff9701f2346968bb306cb43", }
步骤3 调用创建或更新录制规则接口,创建录制规则。
1. 选择POST请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-rules
2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
3. Request Body中传入如下参数:
{ "obs_addr": {
API 参考 4 应用示例
"bucket": "obsName", "location": "cn-north-4", "object": "Record/",
"project_id": "01234567890123456789012345678901"
},
"record_formats": ["MP4"], "mp4_config": {}
}
4. 请求响应成功后,返回已创建的录制规则。
{ "app_id": "5ff9701f2346968bb306cb43",
"rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab", "create_time": "2021-04-21T10:29:33Z",
"hls_config": { "record_cycle": 0,
"record_max_duration_to_merge_file": 0 },
"mp4_config": { "record_cycle": 7200,
"record_max_duration_to_merge_file": 0,
"record_prefix": "Record/{publish_domain}/{app}/{record_type}/{record_format}/
{stream}_{file_start_time}/{stream}_{file_start_time}"
"project_id": "01234567890123456789012345678901"
},
"record_formats": [ "MP4"
],
"update_time": "2021-04-21T10:29:33Z"
}
步骤4 调用RTC增值(录制)事件回调配置接口,配置录制回调。
1. 选择PUT请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-callback
2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
3. Request Body中传入如下参数:
{ "url": "http://mydomain.com/callback",
"auth_key": "8923ab8c2dcef4538923ab8c2dcef453"
}
4. 请求响应成功后,返回已创建的回调信息。
{ "app_id": "5ff9701f2346968bb306cb43", "record_callback": {
"auth_key": "8923ab8c2dcef4538923ab8c2dcef453", "update_time": "2021-04-07T12:05:18.0718Z", "url": "http://mydomain.com/callback", "notify_event_subscription": [
步骤5 终端用户通过SparkRTC APP加入某个SparkRTC房间,SparkRTC APP的集成开发请参 见客户端SDK,您也可以直接使用SparkRTC Demo进行验证。
步骤6 调用启动合流任务接口,创建录制任务。
1. 选择POST请求方法并输入URI。
API 参考 4 应用示例
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs
2. 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
3. Request Body中传入如下参数:
{ "mix_param": {
"room_id": "room001",
"encode_template": "1920x1080_30_4620", "max_idle_time": 30,
"layout_template": "nine_grids_view" //若视频布局为屏幕共享,则填写为screen_share_left或 screen_share_right。
},
"record_param": {
"record_rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab"
} }
layout_template:视频布局模板编号。
– nine_grids_view:九宫格模板(自适应模板)。
每个用户画面平铺在画布上,大小一致。根据用户数量,动态调整每个画面 的大小和位置,最多支持25个画面。不同人数的实际布局效果如下图所示:
▪
如果实际视频流的宽高比与视窗的宽高比不一致,则视频画面会裁剪以 适配视窗的大小。▪
如果中途有流退出房间,则该条流的画面会被后进入房间的流顶替。▪
如果房间内的人数不足,则剩余位置显示背景色。▪
如果用户只发送音频,仍然会占用画面位置。▪
支持背景图,如果房间内人数不足,则显示背景图。– screen_share_left、screen_share_right:主视图在左边、右边的屏幕共享 模板(自适应模板)。
屏幕分享(或者主讲人摄像头画面)始终占据屏幕左侧或者右侧大画面位 置,其他用户依次垂直排列于旁边,最多支持17个画面。不同人数的实际布 局效果如下图所示:
API 参考 4 应用示例
▪
大视窗画面,可选择主讲摄像头流或共享屏幕流。▪
大视窗画面,显示指定的UID用户的视频,如果未指定或者指定用户未 进入频道,则大视窗区域显示背景色。▪
左侧大视窗为了保持内容的完整性采用缩放方式处理,右侧小视窗采用 裁剪方式适配视窗的大小。▪
右侧小视窗画面按照加入房间的时间先后顺序排列。▪
右侧小视窗有流退出房间,则该条流的画面会被后进入房间的流顶替。▪
如果房间内的人数不足,则剩余位置显示背景色。API 参考 4 应用示例
▪
如果用户只发送音频,仍然会占用画面位置。▪
支持背景图,如果房间内人数不足,则显示背景图。4. 请求响应成功后,返回合流录制任务信息。
{ "app_id": "5ff9701f2346968bb306cb43", "create_time": "2021-04-21T11:47:32Z", "job_id": "607f9fc100d861eeefff9b300b388dab", "job_unique_id": "87b1f2b8da9c44cd",
"mix_param": {
"room_id": "room001",
"layout_template": "nine_grids_view", "encode_template": "1920x1080_30_4620", "max_idle_time": 30
},
"push_param": { "rtmp_urls": null },
"record_param": {
"record_rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab"
},
"room_id": "room001",
"start_time": "2021-04-21T11:47:32Z", "state": "INIT",
"stop_time": "0001-01-01T00:00:00Z",
"stream_name": "m_607f9fc100d861eeefff9b300b388dab_room001", "update_time": "2021-04-21T11:47:32Z"
}
步骤7 SparkRTC房间结束音视频互动后,您可以在配置的OBS桶中获取录制文件。
----结束
API 参考 4 应用示例
5 应用管理
5.1 创建应用