功能描述
云端录制支持两种录制模式:
- 单流录制模式:分别录制频道中每个 UID 的音频流和视频流,每个 UID 均有其对应的音频文件和视频文件。
- 合流录制模式:频道内所有 UID 的音视频混合录制为一个音视频文件。
本文介绍如何通过设置 RESTful API 参数在单流模式下进行录制。
阅读本文前,请确保你已了解如何使用 RESTful API 进行云端录制,详见快速开始。单流或合流模式的设置必须在开始录制的时候完成,不支持在录制开始后切换模式。请参阅单流录制模式和合流录制模式的区别来决定应使用哪种模式。
为方便起见,本文假设频道内每个用户都发送音频和视频。如果有用户没有发送音频或视频(例如直播频道中的观众),一般不会生成该用户的音频或视频录制文件。
实现方法
在调用 start
方法时,将 mode
参数设置为 individual
,即可启用单流模式。
该模式下录制文件的音视频编码配置如下:
- 音频编码配置:采样率固定为 48 kHz,声道数和码率与原始音频流一致。
- 视频编码配置:与原始视频流一致。
根据录制内容的不同,录制生成的文件如下表所示:
录制内容 | 参数设置 | 录制生成文件 |
---|---|---|
仅录制音频 | streamTypes 设为 0 | 每个 UID 生成一个 M3U8 文件和多个 TS 文件,TS 文件内仅存储该 UID 的音频数据。 |
仅录制视频 | streamTypes 设为 1 | 每个 UID 生成一个 M3U8 文件和多个 TS 文件,TS 文件内仅存储该 UID 的视频数据。 |
同时录制音视频 | (默认设置) streamTypes 设为 2 | 每个 UID 生成两个 M3U8 文件和多个 TS 文件,TS 文件分开存储 UID 的音频数据及视频数据。 |
录制后共生成四个 M3U8 文件(每个 UID 对应两个 M3U8 文件)和多个 TS 文件,分开存储音视频数据。通过音视频合并转码脚本完成文件合并后,你会得到两个 MP4 文件。
如果你想直接获得 MP4 文件,在调用start
方法的时候设置avFileType
为 ["hls","mp4"],录制服务会在录制结束后进行排队转码生成 MP4 文件,并将 MP4 文件上传至你指定的第三方云存储(不支持七牛云)。
录制文件的命名规则详见管理录制文件。
start 请求示例
- 在单流模式下进行录制的请求 URL 为:
https://api.agrtc.cn/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/individual/start
Content-type
为application/json;charset=utf-8
Authorization
为Basic authorization
,生成方法请参考 HTTP 基本认证。- 请求包体内容:
{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"token": "<token if need>",
"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"]
}
}
}
开发注意事项
- 单流模式下每个 UID 的音频和视频均分开录制,如需合成每个 UID 的音视频,需要通过
convert.py
脚本进行转码。详见音视频文件合并。 - 如果录制内容选择仅录制视频或同时录制音视频,但是 Web 端用户没有发送视频,也会生成视频录制文件,录制黑屏。