本文介绍使用云端录制 RESTful API 进行单流录制的重点步骤。建议你同时参考云端录制 RESTful API 快速开始了解云端录制的基础流程。
云端录制共支持三种录制模式:
单流录制模式下,分别录制频道中每个 UID 的音频流和视频流,每个 UID 均有其对应的音频文件和视频文件。
举例来说,当频道中有两个用户,且同时录制音视频时,单流录制生成的文件如下图所示:
录制后共生成四个 M3U8 文件(每个 UID 对应两个 M3U8 文件)和多个 TS/WebM 文件,分开存储音视频数据。通过音视频合并转码脚本完成文件合并后,你会得到两个 MP4 文件。
在开始录制前,必须调用 acquire
方法请求一个用于云端录制的 resource ID。使用该方法,需要注意 scene
参数。对于单流录制,你需要将其设置为 0,即分配实时音视频录制资源。
请求 URL:https://api.agora.io/v1/apps/<yourappid>/cloud_recording/acquire
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。
请求包体内容:
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
"resourceExpiredHour": 24,
"scene": 0
}
}
在调用 start
方法时,你需要将 mode
参数设置为 individual
,开启单流录制模式。该模式下,你还需要通过 recordingConfig
设置单流录制的详细信息,以及通过 storageConfig
设置第三方云存储的信息。
单流录制支持的 clientRequest
参数包括:
参数 | 配置内容 | 是否选填 |
---|---|---|
token |
动态密钥 | 如频道使用了 token,则为必填 |
recordingConfig |
媒体流订阅、转码、输出音视频属性 | 必填 |
recordingFileConfig |
录制文件 | 选填 |
storageConfig |
第三方云存储 | 必填 |
https://api.agora.io/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/individual/start
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"token": "<token if any>",
"recordingConfig": {
"maxIdleTime": 30,
"streamTypes": 2,
"channelType": 0,
"videoStreamType": 1,
"subscribeVideoUids": ["123","456"],
"subscribeAudioUids": ["123","456"],
"subscribeUidGroup": 0
},
"storageConfig": {
"accessKey": "xxxxxxf",
"region": 3,
"bucket": "xxxxx",
"secretKey": "xxxxx",
"vendor": 2,
"fileNamePrefix": ["directory1","directory2"]
}
}
}
该模式下录制文件的音视频编码配置如下:
根据录制内容的不同,录制生成的文件如下表所示:
录制内容 | 参数设置 | 录制生成文件 |
---|---|---|
仅录制音频 | streamTypes 设为 0 |
每个 UID 生成一个 M3U8 文件和多个 TS/WebM 文件,TS/WebM 文件内仅存储该 UID 的音频数据。 |
仅录制视频 | streamTypes 设为 1 |
每个 UID 生成一个 M3U8 文件和多个 TS/WebM 文件,TS/WebM 文件内仅存储该 UID 的视频数据。 |
同时录制音视频 | (默认设置) streamTypes 设为 2 |
每个 UID 生成两个 M3U8 文件和多个 TS/WebM 文件,TS/WebM 文件分开存储 UID 的音频数据及视频数据。 |
单流模式下,Web 端选择 VP8 编码时,云端录制生成的切片文件为 WebM 文件。其他情况下生成的切片文件均为 TS 文件。
录制文件的命名规则详见管理录制文件。
convert.py
脚本进行转码。详见音视频文件合并。