设置单流音频不转码录制
功能介绍
在单流录制模式且仅录制音频(streamTypes
为 0
)的场景下,你可以通过字段设置来选择是否对录制后生成的文件进行转码。
单流音频转码或不转码录制的差异如下表所示:
对比项 | 单流音频转码录制 | 单流音频不转码录制 |
---|---|---|
音频编码时是否转码 | 是 | 是 |
音频原始数据 | 采样率、声道数和码率固定为 48 kHz、单声道和 48 Kbps | 码率、采样率和声道数由发流端的音频编码参数
|
音频编码格式 | LC-AAC | 由发流端配置的
|
录制生成文件 | 每个 UID 生成一个 M3U8 格式的音频文件和多个 TS 格式的音频文件。 | 同转码录制。如果用户通过 |
播放器兼容性 | 支持 HLS 协议的主流播放器均可播放该录制文件 | 音频编码格式由发流端配置的
|
本文介绍使用云端录制 RESTful API 进行单流音频不转码录制以及延时混音的具体步骤,及你需要重点关注的参数设置。
实现单流不转码录制
1. 获取 Resource ID
开始录制前,调用 acquire
方法请求一个用于云端录制的 Resource ID。
请求示例如下:
-
请求 URL:
HTTPhttps://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/acquire
-
请求 Body 内容:
JSON{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {
"resourceExpiredHour": 24,
"scene": 0
}
}
2. 开始单流不转码录制
在调用 start
方法时,你需要将 mode
参数设置为 individual
,开启单流录制模式。
单流音频不转码录制的 clientRequest
字段及配置如下:
字段 | 配置内容 | 是否必填 |
---|---|---|
token | String 类型,动态密钥。 | 如频道使用了 Token,则为必填。 |
appsCollection | JSON Object。用于设置云端录制应用。如需使用延时混音,则将 combinationPolicy 字段设置为 postpone_transcoding 。 | 如果使用延时混音则为必填 |
transcodeOptions | JSON Object,用于配置录制文件延时混音属性。 | 如果使用延时混音则为必填 |
recordingConfig | JSON Object,用于配置媒体流订阅、转码、输出音频属性。 | 是 |
recordingConfig.streamTypes | Number 类型,订阅媒体流类型,单流音频不转码录制设置为 0 (仅订阅音频)。 | 是 |
recordingConfig.streamMode | String 类型,媒体流输出模式,单流音频不转码录制设置为 original (原始模式)。 | 是 |
storageConfig | JSON Object,用于配置第三方云存储设置。 | 是 |
不开启延时混音
进行普通的单流音频不转码录制,不开启延时混音时,请求 Body 示例如下:
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {
"token": "<token if any>",
"recordingConfig": {
"channelType": 1,
"streamTypes": 0,
"streamMode": "original",
"maxIdleTime": 30,
"subscribeAudioUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"recordingFileConfig": {
"avFileType": [
"hls"
]
},
"storageConfig": {
"vendor": 2,
"region": 3,
"bucket": "xxxxx",
"accessKey": "xxxxx",
"secretKey": "xxxxx",
"fileNamePrefix": [
"directory1",
"directory2"
]
}
}
}
在录制过程中,如果发流端用户静音或离开频道,录制服务会立刻对音频文件进行切片,并停止录制。
开启延时混音
在单流音频录制下,如果希望结束录制后获取频道内所有用户混音后的录制文件,你可以在开始单流音频不转码录制时进一步设置延时混音功能。设置后,录制服务会在录制结束后 24 小时内(特殊情况下会达到 48 小时以上)将指定频道内所有 UID 的录制文件合并且转码生成一个 MP3/M4A/AAC 文件,并将录制文件上传至你指定的第三方云存储。
在延时混音的场景下,录制文件会在声网边缘服务器上缓存,最长不超过 24 小时。如果你的业务对信息安全敏感,为了确保数据合规,请慎重考虑是否使用延时混音功能。如有任何疑虑,请联系声网技术支持。
开启延时混音的单流音频不转码录制下,请求 Body 示例如下:
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {
"token": "<token if any>",
"appsCollection": {
"combinationPolicy": "postpone_transcoding"
},
"transcodeOptions": {
"container": {
"format": "mp3"
},
"transConfig": {
"transMode": "audioMix"
},
"audio": {
"sampleRate": "48000",
"bitrate": "48000",
"channels": "2"
}
},
"recordingConfig": {
"channelType": 1,
"streamTypes": 0,
"streamMode": "original",
"maxIdleTime": 30,
"subscribeAudioUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"recordingFileConfig": {
"avFileType": [
"hls"
]
},
"storageConfig": {
"vendor": 2,
"region": 3,
"bucket": "xxxxx",
"accessKey": "xxxxx",
"secretKey": "xxxxx",
"fileNamePrefix": [
"directory1",
"directory2"
]
}
}
}
3. 停止单流不转码录制
录制完成后,调用 stop
方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire
方法请求一个新的 Resource ID。
请求示例如下:
-
请求 URL:
HTTPhttps://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/individual/stop
-
请求 Body 内容:
JSON{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {
"async_stop": false
}
}
录制生成文件
单流音频不转码录制结束后,你可以直接播放 M3U8 音频文件,也可以使用声网转码脚本,将指定 UID 下所有 TS 文件合并转换为一个 MP3/M4A/AAC 音频文件后播放。具体转码方式详见使用转码脚本。
录制文件的命名规则详见管理录制文件。
参考文档
相关文档
在单流不转码录制过程中,你还可以参考如下文档:
API 参考
你可以参考以下方法了解字段详情: