录制相关
设置录制状态
开始或结束录制指定课堂。详见课堂录制最佳实践。
接口原型:
- 方法:PUT
- 接入点:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/records/states/{state}
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
state | Integer | 必填 | 录制状态:
|
请求包体参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
mode | String | 非必填 | 录制模式:填入 web ,表示启用页面录制模式。录制生成 MP4 文件。此外,录制服务会在当前 MP4 文件时长超过 2 小时或大小超过 2 GB 时创建一个新的 MP4 文件。 |
webRecordConfig | Object | 非必填 | 页面录制配置。当
|
retryTimeout | Number | 非必填 | 重试超时时间,单位为秒。灵动课堂 RESTful API 最多重试两次。设置 retryTimeout 参数后,声网建议你参考课堂录制最佳实践进行操作。 |
请求示例
curl -X PUT 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/records/states/1' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: agora token={educationToken}' \
--data-raw '{
"mode": "web",
"webRecordConfig": {
"rootUrl": "https://xxx.yourdomain.com/record_page_prod.html"
},
"retryTimeout": 60
}'
响应参数
参数 | 类型 | 描述 |
---|---|---|
code | Integer | 响应状态码:
|
msg | String | 接口响应的文字信息。 |
ts | Number | 当前服务端的 Unix 时间戳,UTC 时间,单位为毫秒。 |
data | Object | 返回数据,包含以下字段:
|
响应示例
{
"code": 0,
"ts": 1610450153520,
"streamingUrl": {
"rtmp": "",
"flv": "",
"hls": ""
}
}
更新录制设置
在录制过程中随时调用此接口更新录制相关设置。每次调用此接口都会覆盖原先的设置。
由于录制启动需要一定时间,建议在开启录制至少一分钟后再调用此接口。
接口原型:
- 方法:PATCH
- 接入点:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/records/states/1
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
请求包体参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
webRecordConfig | Object | 非必填 | 页面录制设置,包含
|
请求示例
curl -X PATCH 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/records/states/1' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: agora token={educationToken}' \
--data-raw '{
"webRecordConfig": {
"onhold": false
}
}'
响应参数
参数 | 类型 | 描述 |
---|---|---|
code | Integer | 响应状态码:
|
msg | String | 接口响应的文字信息。 |
ts | Number | 当前服务端的 Unix 时间戳,UTC 时间,单位为毫秒。 |
响应示例
{
"code": 0,
"ts": 1610450153520
}
查询录制列表
查询指定课堂内的录制列表。每次开启录制会生成一条记录,你可以通过查询录制列表接口的 nextId
参数分批拉取,每批最多拉取 100 条数据。
- 当类型为页面录制时,单次录制记录可能因为时长或文件大小拆分多个录像 URL,在
recordDetails.url
参数中返回。 - 当类型为单流录制时,每条流的录像会拆分成多个录像 URL,在
recordDetails.url
参数中返回。
接口原型:
- 方法:GET
- 接入点:
/{region}/edu/apps/{appId}/v2/rooms/{roomUuid}/records
请求参数
URL 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
region | String | 必填 | 服务区域,可设为如下值:
注意 对于同一课堂,服务端接口调用的区域需要与客户端课堂创建的区域一致,否则会报告“房间不存在”的错误。 |
appId | String | 必填 | 你在声网控制台创建的项目的 App ID,详见获取 App ID。 |
roomUuid | String | 必填 | 课堂 UUID。这是课堂的唯一标识符,也是加入 RTC 和 RTM 时所使用的频道名。长度在 64 字符以内。若该房间需要使用页面录制,长度需在 50 字符内。 以下为支持的字符集范围(共 89 个字符):
|
Query 参数
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
nextId | String | 非必填 | 下一批数据的起始 ID。第一次查询可传 null,后续查询传入响应结果里得到的 nextId 的值继续查询。 |
请求示例
curl -X GET 'https://api.sd-rtn.com/{region}/edu/apps/{yourAppId}/v2/rooms/test_class/records' \
-H 'Authorization: agora token={educationToken}'
响应参数
参数 | 类型 | 描述 |
---|---|---|
code | Integer | 响应状态码:
|
msg | String | 接口响应的文字信息。 |
ts | Number | 当前服务端的 Unix 时间戳,UTC 时间,单位为毫秒。 |
data | Object | 返回数据,包含以下字段:
注意 本地访问录制页面时,远端开启录制的用户会被踢出,请确保录制停止后再访问录制页面。 |
响应示例
{
"code": 0,
"msg": "Success",
"ts": 1610450153520,
"data": {
"total": 17,
"list": [
{
"recordId": "xxxxxx",
"appId": "xxxxxx",
"roomUuid": "jason0",
"startTime": 1602648426497,
"endTime": 1602648430262,
"resourceId": "xxxxxx",
"sid": "xxxxxx",
"recordUid": "xxxxxx",
"boardId": "xxxxxx",
"boardToken": "xxxxxx",
"type": 2,
"status": 2,
"url": "scenario/recording/xxxxxx/xxxxxx/xxxxxx.m3u8",
"recordDetails": [
{
"url": "xxxx/xxxx.mp4"
}
]
},
{...}
],
"count": 17
}
}