本文介绍使用云端录制 RESTful API 进行单流音频不转码录制以及延时混音的重点步骤。建议你同时参考云端录制 RESTful API 快速开始了解云端录制的基础流程。
在单流录制模式且仅录制音频(streamTypes
为 0
)的场景下,你可以通过简单的参数设置选择单流音频转码录制和单流音频不转码录制。二者差异对比如下:
单流音频转码录制 | 单流音频不转码录制 | |
---|---|---|
音频编码时是否转码 | 是 | 否 |
音频原始数据 | 采样率、声道数和码率固定为 48 kHz、单声道和 48 Kbps。 | 码率、采样率和声道数由发流端的音频编码参数 AudioProfile 决定。 |
音频编码格式 | LC-AAC | 由发流端配置的 AudioProfile 决定。 |
录制生成文件 | 每个 UID 生成一个 M3U8 格式的音频文件和多个 TS 格式的音频文件。 | 同单流转码录制。但当用户 mute /disable /leaveChannel 后,立即停止音频录制,没有 15 秒的静音数据。 |
播放器兼容性 | 支持 HLS 协议的主流播放器均可播放该录制文件。 | 音频编码格式由发流端配置的 AudioProfile 决定,不同音频编码格式的播放器兼容性不同。 |
如果需得到频道内所有用户混音后的录制文件,你还可以在开始单流音频不转码录制时开启延时混音。
在开始录制前,必须调用 acquire
方法请求一个用于云端录制的 resource ID。
请求 URL:
https://api.sd-rtn.com/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
,开启单流录制模式。
单流音频不转码录制的 clientRequest
参数及配置如下:
参数 | 配置内容 | 是否必填 |
---|---|---|
token |
String 类型,动态密钥。 | 如频道使用了 token,则为必填。 |
recordingConfig |
JSON Object,用于配置媒体流订阅、转码、输出音频属性,详见录制设置。 | 是 |
recordingConfig.streamTypes |
Number 类型,订阅媒体流类型,单流音频不转码录制设置为 0 (仅订阅音频)。 |
是 |
recordingConfig.streamMode |
String 类型,媒体流的输出模式,单流音频不转码录制设置为 original (原始模式)。 |
是 |
storageConfig |
JSON Object,第三方云存储设置。 | 是 |
请求 URL:
https://api.sd-rtn.com/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": 0,
"streamMode": "original",
"channelType": 0,
"subscribeAudioUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"storageConfig": {
"accessKey": "xxxxx",
"region": 3,
"bucket": "xxxxx",
"secretKey": "xxxxx",
"vendor": 2,
"fileNamePrefix": [
"directory1",
"directory2"
]
}
}
}
当发流端用户静音或离开频道,录制服务立即对音频文件切片并停止录制。
录制完成后,调用 stop
方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire
方法请求一个新的 resource ID。
https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/individual/stop
Content-type
为 application/json;charset=utf-8
Authorization
为 Basic authorization,生成方法请参考 RESTful API 认证。
请求包体内容:
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest":{
"async_stop": false
}
}
如需得到频道内所有用户混音后的录制文件,你可以在开始单流音频不转码录制时开启延时混音功能。开启后,录制服务会在录制结束后 24 小时内(特殊情况下会达到 48 小时以上)将指定频道内所有 UID 的录制文件合并且转码生成一个 MP3/M4A/AAC 文件,并将录制文件上传至你指定的第三方云存储。
调用 start
方法时,延时混音的 clientRequest
参数及配置如下:
参数 | 配置内容 | 是否必填 |
---|---|---|
token |
String 类型,动态密钥。 | 如频道使用了 token,则为必填。 |
appsCollection |
JSON Object,应用设置。 | 是 |
appsCollection.combinationPolicy |
String 类型,各个云端录制应用的组合方式。延时混音设置为 postpone_transcoding 。 |
是 |
recordingConfig |
JSON Object,用于配置音频流订阅、转码、输出音频属性,详见录制设置。 | 是 |
recordingConfig.streamTypes |
Number 类型,订阅媒体流类型,延时混音设置为 0 (仅订阅音频)。 |
是 |
recordingConfig.streamMode |
String 类型,媒体流的输出模式,延时混音设置为 original (原始模式)。 |
是 |
transcodeOptions |
JSON Object,用于配置延时混音,详见转码设置。 | 是 |
storageConfig |
JSON Object,第三方云存储设置。 | 是 |
请求 URL:
https://api.sd-rtn.com/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>",
"appsCollection": {
"combinationPolicy": "postpone_transcoding"
},
"recordingConfig": {
"maxIdleTime": 30,
"streamTypes": 0,
"streamMode": "original",
"channelType": 0,
"subscribeAudioUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"transcodeOptions": {
"container": {
"format": "m4a"
},
"transConfig": {
"transMode": "audioMix"
},
"audio": {
"sampleRate": "48000",
"bitrate": "48000",
"channels": "2"
}
},
"storageConfig": {
"accessKey": "xxxxx",
"region": 3,
"bucket": "xxxxx",
"secretKey": "xxxxx",
"vendor": 2,
"fileNamePrefix": [
"directory1",
"directory2"
]
}
}
}
录制文件的命名规则详见管理录制文件。你可以直接播放 M3U8 音频文件,也可以使用声网转码脚本,将指定 user ID 下所有 TS 文件合并转换为一个 MP3/M4A/AAC 音频文件后播放。详见合并单流录制获得的音频和视频文件。
如果开启延时混音, 你还可以在录制结束后 24 小时内(特殊情况下会达到 48 小时以上)获取到频道内所有 UID 混音后的 MP3/M4A/AAC 文件。
使用单流音频不转码录制,你可以订阅云端录制服务(serviceType
为 0
)相关回调事件,详见回调事件。