实时音视频 SparkRTC-示例2:创建合流录制任务:操作步骤
操作步骤
- 获取用户Token,用于调用SparkRTC接口时进行认证鉴权。
在“我的凭证”页面获取username、password、domainname,调用如下接口 获取Token 。详细信息请参见构造请求。
POST https://iam.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //用户名。 "password": "password", //用户登录密码。 "domain": { "name": "domainname" //用户所属的账号名。 } } } }, "scope": { "domain": { "name": "domainname" //用户所属的账号名。 } } }}
如图1所示,红框中的信息为获取用户Token。 - 调用创建应用接口创建SparkRTC应用。
- 选择POST请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps
- 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
- Request Body中传入如下参数:
{ "app_name" : "rtctest"}
- 请求响应成功后,返回已创建应用的ID。
{"app_id": "5ff9701f2346968bb306cb43",}
- 选择POST请求方法并输入URI。
- 调用创建或更新录制规则接口,创建录制规则。
- 选择POST请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-rules
- 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
- Request Body中传入如下参数:
{"obs_addr": {"bucket": "obsName","location": "cn-north-4","object": "Record/","project_id": "01234567890123456789012345678901"},"record_formats": ["MP4"],"mp4_config": {}}
- 请求响应成功后,返回已创建的录制规则。
{"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}"},"obs_addr": {"bucket": "obsName","location": "cn-north-4","object": "Record/","project_id": "01234567890123456789012345678901"},"record_formats": ["MP4"],"update_time": "2021-04-21T10:29:33Z"}
- 选择POST请求方法并输入URI。
- 调用RTC增值(录制)事件回调配置接口,配置录制回调。
- 选择PUT请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-callback
- 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
- Request Body中传入如下参数:
{"url": "http://mydomain.com/callback","auth_key": "8923ab8c2dcef4538923ab8c2dcef453"}
- 请求响应成功后,返回已创建的回调信息。
{"app_id": "5ff9701f2346968bb306cb43","record_callback": {"auth_key": "8923ab8c2dcef4538923ab8c2dcef453","update_time": "2021-04-07T12:05:18.0718Z","url": "http://mydomain.com/callback","notify_event_subscription": ["RECORD_NEW_FILE_START","RECORD_FILE_COMPLETE","CLOUD_RECORD_OVER"]}}
- 选择PUT请求方法并输入URI。
- 终端用户通过SparkRTC APP加入某个SparkRTC房间,SparkRTC APP的集成开发请参见客户端SDK。
- 调用启动合流任务接口,创建录制任务。
- 选择POST请求方法并输入URI。
https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/mix-stream-jobs
- 请求消息头中增加“X-Auth-Token”,值设置为步骤1中获取的用户Token。
- 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个画面。不同人数的实际布局效果如下图所示:
- 大视窗画面,可选择主讲摄像头流或共享屏幕流。
- 大视窗画面,显示指定的UID用户的视频,如果未指定或者指定用户未进入频道,则大视窗区域显示背景色。
- 左侧大视窗为了保持内容的完整性采用缩放方式处理,右侧小视窗采用裁剪方式适配视窗的大小。
- 右侧小视窗画面按照加入房间的时间先后顺序排列。
- 右侧小视窗有流退出房间,则该条流的画面会被后进入房间的流顶替。
- 如果房间内的人数不足,则剩余位置显示背景色。
- 如果用户只发送音频,仍然会占用画面位置。
- 支持背景图,如果房间内人数不足,则显示背景图。
- nine_grids_view:九宫格模板(自适应模板)。
- 请求响应成功后,返回合流录制任务信息。
{"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"}
- 选择POST请求方法并输入URI。
- SparkRTC房间结束音视频互动后,您可以在配置的OBS桶中获取录制文件。