录制完成后,调用 stop
方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire
方法请求一个新的 resource ID。
该 API 需要在 URL 中传入以下参数。
参数 | 类型 | 描述 |
---|---|---|
appid |
String | 你的项目使用的 App ID。必须使用和待录制的频道相同的 App ID。 |
resourceid |
String | 通过 acquire 请求获取的 resource ID。 |
sid |
String | 通过 start 请求获取的录制 ID。 |
mode |
String | 录制模式,支持单流模式 individual 、合流模式 mix (默认模式)和页面录制模式web 。 |
Content-Type
: application/json
Authorization
: 该字段的值需参考认证说明。
该 API 需要在请求包体中传入以下参数:
参数 | 类型 | 描述 |
---|---|---|
cname |
String |
|
uid |
String | 字符串内容为云端录制服务在频道内使用的 UID,用于标识该录制服务,需要和你在 acquire 请求中输入的 UID 相同。 |
clientRequest |
JSON Object | 特定的客户请求参数。 |
clientRequest.async_stop |
(可选)Bool | 设置 stop 方法的响应机制。true :调用 stop 后立即收到响应。false :调用 stop 后,需等待所有录制文件上传至第三方云存储方可收到响应。 |
https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/<mode>/stop
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
"async_stop": false
}
}
如果返回的 HTTP 状态码为 200
,表示请求成功,响应包体中包含以下字段:
code
: Number 类型,响应状态码。resourceId
: String 类型,云端录制使用的 resource ID。sid
: String 类型,录制 ID。成功开始云端录制后,你会得到一个 sid (录制 ID)。该 ID 是一次录制周期的唯一标识。serverResponse
: JSON Object,服务器返回的具体信息。该字段中的子元素与你在 start
请求中的设置有关。例如,如果你在 start
请求中设置了 snapshotConfig
或 extensionServiceConfig
,则 stop
不会返回 fileListMode
字段。fileListMode
: String 类型,fileList
字段的数据格式。"string"
:fileList
为 String 类型。合流模式下,如果 avFileType
设置为 ["hls"]
,fileListMode
为 "string"
。"json"
:fileList
为 JSON Array。单流模式下,或合流模式下 avFileType
设置为 ["hls","mp4"]
时,fileListMode
为 "json"
。fileList
:当 fileListMode
为 "string"
时,fileList
为 String 类型,表示录制产生的 M3U8 文件的文件名。当 fileListMode
为 "json"
时, fileList
为 JSON Array,由每个录制文件的具体信息组成的数组。一个录制文件的具体信息包括以下字段:fileName
:String 类型,录制产生的 M3U8 文件和 MP4 文件的文件名。trackType
:String 类型,录制文件的类型。"audio"
:纯音频文件。"video"
:纯视频文件。"audio_and_video"
:音视频文件。uid
:String 类型,用户 UID,表示录制的是哪个用户的音频流或视频流。合流录制模式下,uid
为 "0"
。mixedAllUser
:Boolean 类型,用户是否是分开录制的。true
:所有用户合并在一个录制文件中。false
:每个用户分开录制。isPlayable
:Boolean 类型,是否可以在线播放。true
:可以在线播放。false
:无法在线播放。sliceStartTime
:Number 类型,该文件的录制开始时间,Unix 时间戳,单位为毫秒。uploadingStatus
:String 类型,当前录制上传的状态。"uploaded"
:本次录制的文件已经全部上传至指定的第三方云存储。"backuped"
:本次录制的文件已经全部上传完成,但是至少有一个 TS 文件上传到了声网云备份。声网服务器会自动将这部分文件继续上传至指定的第三方云存储。"unknow"
:未知状态。extensionServiceState
: JSON Array,由每个服务的状态组成的数组。各扩展服务状态数组字段说明如下:serviceName
:String 类型,服务类型。 "upload_service"
代表上传服务。payload
:JSON Object。该服务的状态信息。uploadingStatus
:String 类型,当前上传服务的状态。"uploaded"
:本次录制的文件已经全部上传至指定的第三方云存储。"backuped"
:本次录制的文件已经全部上传完成,但是至少有一个 TS 文件上传到了声网云备份。声网服务器会自动将这部分文件继续上传至指定的第三方云存储。"unknow"
:未知状态。serviceName
:String 类型,扩展服务类型。 "web_recorder_service"
代表页面录制。payload
:JSON Object。该扩展服务的状态信息。state
:String 类型,将订阅内容上传至扩展服务的状态。"init"
:服务正在初始化。"inProgress"
:服务启动完成,正在进行中。"exit"
:服务退出。fileList
:JSON Array。由每个录制文件的具体信息组成的数组。fileName
:String 类型,录制产生的 M3U8 或 MP4 文件的文件名。sliceStartTime
:Number 类型,该文件的录制开始时间,Unix 时间戳,单位为毫秒。onhold
:Bool 类型。页面录制是否处于暂停状态。true
:页面录制暂停。false
:页面录制继续serviceName
:String 类型,扩展服务类型。 "rtmp_publish_service"
代表页面录制并推流到 CDN。payload
:JSON Object。该扩展服务的状态信息。status
:String 类型,页面录制当前的推流状态,包括以下状态:"connecting"
:正在连接 CDN 服务器。"publishing"
:正在推流。"onhold"
:推流暂停。"disconnected"
:连接 CDN 服务器失败,声网建议你更换 CDN 推流地址。"Code": 200,
"Body":
{
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG",
"sid": "38f8e3cfdc474cd56fc1ceba380d7e1a",
"serverResponse": {
"fileListMode": "json",
"fileList": [
{
"fileName": "xxx.m3u8",
"trackType": "audio_and_video",
"uid": "123",
"mixedAllUser": true,
"isPlayable": true,
"sliceStartTime": 1562724971626
},
{
"fileName": "xxx.m3u8",
"trackType": "audio_and_video",
"uid": "456",
"mixedAllUser": true,
"isPlayable": true,
"sliceStartTime": 1562724971626
}
],
"uploadingStatus": "uploaded"
}
}