云端录制

更新时间: 2023-10-23 16:45:52

# 云端录制

# 服务域名

线上服务器: http://rtcapi.xueersi.com

测试环境:https://api2.xueersi.com/rtcapi2stage

# 开始单流录制

# 接口地址

{$域名}/api/record/startIndividualSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机唯一字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String appid 申请分配
uid Number 用户uid
room String 房间id
callBackUrl String 录制完成,回调业务地址如果需要回调必须设置,回调会比较及时,也支持业务方自主查询
bgImg JSON 设置背景图
maxIdleTime Number 最长空闲频道时间,频道内无用户的状态持续超过该时间,录制自动退出默认:30s

# 返回内容

字段 类型 必须 描述
s Number 状态码 10000 成功 其他值为失败
e String 返回说明信息
d Json
sid String 录制返回值,结束/查询录制需要传递该参数

# demo

请求:
curl -s -X POST 'https://api2.xueersi.com/rtcapi2stage/api/record/startIndividualSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Traceid: 9a13fae0e60d747485351487438fcc61' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"room": 223456789,
"user": 20422,
"bgImg": [{
"imgUrl": "https://wxapp.xesimg.com/TeacherBoard/Assets/no_camera_icon.jpg"
 }],
"callBackUrl": "http://test.com"

返回:
{
"s": 10000,
"d": {
"engine": 7,
"sid": "a67b4d6f2b124b84aca1a5949fe80fe6"
},
"e": "success"
} 

# 结束单流录制

# 接口地址

{$域名}/ (opens new window)api/record/stopIndividualSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机唯一字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
sid String 开始录制返回的值

# 返回内容

字段 类型 必须 描述
s Number 状态码 10000 成功 其他值为失败
e String 返回说明信息
d Json

# demo

请求:
curl -s -X POST 'https://api2.xueersi.com/rtcapi2stage/api/record/stopIndividualSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"sid": "d54e1e62898d4907b4d5dd177687f717"
}' 
返回:
{
"s": 10000,
"d": {},
"e": "success"
} 

# 开始合流录制

# 接口地址

{$域名}/api/record/startMixSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
room String 房间id
callBackUrl String 录制完成,回调业务地址如果需要回调必须设置,参考录制回调,回调会比较及时
bgImg Json 设置背景图
maxIdleTime Number 最长空闲频道时间,频道内无用户的状态持续超过该时间,录制程序会自动退出默认:30s
transcodingConfig Json 合流布局,转码布局设置
subscribeAudioUids Json 指定要订阅的音频流,即音频订阅白名单 []String{"123", "124"}
subscribeVideoUids Json 指定要订阅的视频流,即视频订阅白名单。[]String{"345", "456"}
unSubscribeAudioUids Json 指定不订阅的音频流,即音频订阅黑名单 []String{"234", "235"}
unSubscribeVideoUids Json 指定不订阅的视频流,即视频订阅黑名单。[]String{"567", "678"}

transcodingConfig:

参数 类型 必填 描述
width Number 视频的宽度,单位为像素,默认值 360。width 不能超过 1920,且 width 和 height 的乘积不能超过 1920 * 1080,超过最大值会报错。
height Number 视频的高度,单位为像素,默认值 640。height 不能超过 1920,且 width 和 height 的乘积不能超过 1920 * 1080,超过最大值会报错。
fps Number 视频的帧率,单位 fps,默认值 15。
bitrate Number 视频的码率,单位 Kbps,默认值 500。
maxResolutionUid String 悬浮布局或垂直布局时,用该参数指定显示大视窗画面的用户 ID。
mixedVideoLayout Number 设置视频合流布局,0、1、2 为预设的合流布局,3 为自定义合流布局。该参数设为 3 时必须设置 layoutConfig 参数。0:(默认)悬浮布局。第一个加入频道的用户在屏幕上会显示为大视窗,铺满整个画布,其他用户的视频画面会显示为小视窗,从下到上水平排列,最多 4 行,每行 4 个画面,最多支持共 17 个画面。1:自适应布局。根据用户的数量自动调整每个画面的大小,每个用户的画面大小一致,最多支持 17 个画面。2:垂直布局。指定一个用户在屏幕左侧显示大视窗画面,其他用户的小视窗画面在右侧垂直排列,最多两列,一列 8 个画面,最多支持共 17 个画面。[默认布局说明见文末]3:自定义布局。须设置 layoutConfig 参数自定义合流布局。单流模式下设置该参数设置为0即可,设置为其他值无意义。
backgroundColor String 屏幕(画布)的背景颜色。支持 RGB 颜色表,字符串格式为 # 号后 6 个十六进制数,默认值 "#000000" 黑色。
layoutConfig JSON 由每个用户对应的布局画面设置组成的数组,支持最多 17 个用户画面。当 mixedVideoLayout 设为 3 时,必须通过该参数自定义合流布局。仅适用于合流模式,单流模式下设置该参数无意义。individual 模式下每个用户都是单独录制成一个文件,全屏显示。

layoutConfig 一个用户画面设置包括以下参数:

参数 类型 必填 描述
uid String 待显示在该区域的用户的 UID,32 位无符号整数。如果不指定 UID,会按照用户加入频道的顺序自动匹配 layoutConfig 中的画面设置。
x_axis Float 屏幕里该画面左上角的横坐标的相对值,范围是 [0.0,1.0],精确到小数点后六位。从左到右布局,0.0 在最左端,1.0 在最右端。
y_axis Float 屏幕里该画面左上角的纵坐标的相对值,范围是 [0.0,1.0],精确到小数点后六位。从上到下布局,0.0 在最上端,1.0 在最下端。
width Float 该画面宽度的相对值,取值范围是 [0.0,1.0],精确到小数点后六位。
height Float 该画面高度的相对值,取值范围是 [0.0,1.0],精确到小数点后六位。
alpha Float 图像的透明度。取值范围是 [0.0,1.0] ,精确到小数点后六位。默认值 1.0。0.0 表示图像为透明的,1.0 表示图像为完全不透明的。
render_mode Number 画面显示模式:0:(默认)裁剪模式。1:缩放模式。

# 返回内容

字段 类型 必须 描述
s Number 状态码 10000 成功 其他值为失败
e String 返回说明信息
d Json
sid 录制返回值,结束/查询录制需要传递该参数

# demo

请求:
curl -s -X POST 'https://api2.xueersi.com/rtcapi2stage/api/record/startMixSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Traceid: 9a13fae0e60d747485351487438fcc6b' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"room": 223456789,
"subscribeAudioUids":["619900"],
"subscribeVideoUids": ["619900"],
"bgImg": [{
"imgUrl": "https://wxapp.xesimg.com/TeacherBoard/Assets/no_camera_icon.jpg"
 }],
"transcodingConfig": {
"height": 640,
"width": 360,
"bitrate": 500,
"fps": 15,
"mixedVideoLayout": 1,
"backgroundColor": "#FF0000"
 },
"callBackUrl": "http://test.com"
}' 

返回: 
{
"s": 10000,
"d": {
"engine": 7,
"sid": "093aa05ec86b4e339d156527bf012ab9"
 },
"e": "success"
} 

# 结束合流录制

# 接口地址

{$域名}/api/record/stopMixSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
sid String 开始录制返回的值
room String 房间id

# 返回内容

字段 类型 必须 描述
s Number 状态码 0 成功 其他值为失败
e String 返回说明信息
d Json

# demo

请求:
curl -s -X POST 'https://api2.xueersi.com/rtcapi2stage/api/record/stopMixSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Traceid: e9a66f9ffc8151de4f810be8546eaf4f' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"sid": "0a14f9a0997346839447225da40b37ff",
"room": 223456789
}'

返回:
{
"s": 10000,
"d": {},
"e": "success"
} 

# 更新录制订阅成员

# 接口地址

{$域名}/ (opens new window)api/record/updateSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
sid String 开始录制返回的值
room String 房间id
clientRequest Json 订阅参数 包含 streamSubscribe 字段。streamSubscribe 为 JSON 类型,用于更新订阅名单

streamSubscribe 参数

参数 类型 必填 描述
audioUidList JSON subscribeAudioUids JSONArray unSubscribeAudioUids JSONArray
videoUidList JSON subscribeVideoUids JSONArray unSubscribeVideoUids JSONArray

# 返回内容

字段 类型 必须 描述
s Number 状态码 0 成功 其他值为失败
e String 返回说明信息
d Json

# demo

请求:
curl -s -X POST 'http://127.0.0.1:3888/api/record/updateSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"sid": "b6948164d89145ceb3f01a9799a64b95",
"room": 223456789,
"clientRequest": {
"streamSubscribe": {
"audioUidList": {
"subscribeAudioUids": ["781319"]
 },
"videoUidList": {
"SubscribeVideoUids": ["781319"]
 }
 }
 }
}' 
返回:
{
"s": 10000,
"d": {},
"e": "success"
} 

# 更新布局

# 接口地址

{$域名}/api/record/updateLayoutSaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
sid String 开始录制返回的值
room String 房间id
clientRequest Json 布局参数

clientRequest具体参数

参数 类型 必填 描述
mixedVideoLayout Number 设置视频合流布局,0、1、2 为预设的合流布局,3 为自定义合流布局。该参数设为 3 时必须设置 layoutConfig 参数。0:(默认)悬浮布局。第一个加入频道的用户在屏幕上会显示为大视窗,铺满整个画布,其他用户的视频画面会显示为小视窗,从下到上水平排列,最多 4 行,每行 4 个画面,最多支持共 17 个画面。1:自适应布局。根据用户的数量自动调整每个画面的大小,每个用户的画面大小一致,最多支持 17 个画面。2:垂直布局。指定一个用户在屏幕左侧显示大视窗画面,其他用户的小视窗画面在右侧垂直排列,最多两列,一列 8 个画面,最多支持共 17 个画面。3:自定义布局。设置 layoutConfig 参数自定义合流布局。
maxResolutionUid String 悬浮布局或垂直布局时,用该参数指定显示大视窗画面的用户 ID。
backgroundColor String 屏幕(画布)的背景颜色。支持 RGB 颜色表,字符串格式为 # 号后 6 个十六进制数。默认值 "#000000" 黑色。
layoutConfig JSONArray 由每个用户对应的布局画面设置组成的数组,支持最多 17 个用户画面。当 mixedVideoLayout 设为 3 时,可以通过该参数自定义合流布局。同start接口中transcodingConfig参数中的layoutConfig参数。
width Number 视频的宽度,单位为像素,默认值 360。width 不能超过 1920,且 width 和 height 的乘积不能超过 1920 * 1080,超过最大值会报错。
height Number 视频的高度,单位为像素,默认值 640。height 不能超过 1920,且 width 和 height 的乘积不能超过 1920 * 1080,超过最大值会报错。
fps Number 视频的帧率,单位 fps,默认值 15。
bitrate Number 视频的码率,单位 Kbps,默认值 500。

# 返回内容

字段 类型 必须 描述
s Number 状态码 0 成功 其他值为失败
e String 返回说明信息
d Json

# demo

请求:
curl -s -X POST 'http://127.0.0.1:3888/api/record/updateLayoutSaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"sid": "b6948164d89145ceb3f01a9799a64b95",
"room": 223456789,
"clientRequest": {
"mixedVideoLayout": 3,
"backgroundColor": "#FF0000",
"layoutConfig": [{
"uid": "1",
"x_axis": 0.1,
"y_axis": 0.1,
"width": 0.1,
"height": 0.1,
"alpha": 1.0,
"render_mode": 1
 },
 {
"uid": "2",
"x_axis": 0.2,
"y_axis": 0.2,
"width": 0.1,
"height": 0.1,
"alpha": 1.0,
"render_mode": 1
 }
 ]
 }
}' 

返回:
{
"s": 10000,
"d": {},
"e": "success"
} 

# 录制回调业务

# 接口地址

https://xxx.com/record/callback // 这个接口由业务方给出

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
s Number 状态码
e String 说明信息
d object
fullHlsurl String 录制m3u8地址
fullMp4Url String 录制mp4地址

备注:回调只会进行一次, 24小时内支持主动查询录制结果

# 查询录制结果

# 接口地址

{$域名}/api/record/ (opens new window)querySaas

# 请求header

字段 描述
Method POST Http 方法
Content-Type application/json json格式
Authorization 接口签名值 Authorization签名
Traceid 随机字符串 排查问题使用

# 请求json参数

字段 类型 必须 描述
appid String 引擎appid
sid String 开始录制返回的值

# 返回内容

字段 类型 必须 描述
s Number 状态码
e String 说明信息
d object
fullHlsurl String 录制m3u8地址
fullMp4Url String 录制mp4地址

# demo

请求:
curl -s -X POST 'http://127.0.0.1:3888/api/record/querySaas' -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBpZCI6ImVlNmJhMzBjLTdjNDYtNDI2ZS04NDFlLTEzYTE2YzA1MTMxNSIsInRpbWVzdGFtcCI6MTY0NDE5OTA5Nn0.kMBFAEz-gY_rwX75rFh5JdexsxabJk5uF0IuNXvF6Rs' -H 'Content-Type: application/json' --data-raw '{
"appid": "ee6ba30c-7c46-426e-841e-13a16c051315",
"sid": "0a14f9a0997346839447225da40b37ff"
}' 

返回:
{
"s": 10000,
"d": {
"fullHlsUrl": "http://rtcrecord.zbzt.eaydu.com/0803c5f0/0a14f9a0997346839447225da40b37ff_223456789.m3u8",
"fullMp4Url": "http://rtcrecord.zbzt.eaydu.com/0803c5f0/0a14f9a0997346839447225da40b37ff_223456789.mp4",
"hlsurl": "0803c5f0/0a14f9a0997346839447225da40b37ff_223456789.m3u8",
"mp4url": "0803c5f0/0a14f9a0997346839447225da40b37ff_223456789.mp4"
 },
"e": "success"
}