2024/08/16 15:22:58
实现合流录制
云端录制支持单流录制、合流录制和页面录制三种模式。合流录制模式指录制并混合频道内所有指定 UID 的音视频,生成一个包含所有指定 UID 音视频的 HLS (HTTP Live Streaming) 流媒体点播文件和可选的 MP4 格式文件。
前提条件
开始前,你可以参考开始云端录制了解云端录制的基础流程。
实现方法
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
参数设置为 mix
,开启合流录制模式。
注意
录制模式的设置必须在开始录制的时候完成,不支持在录制开始后切换模式。
该模式下,你还需要对 clientRequest
设置如下字段:
字段 | 配置内容 | 是否选填 |
---|---|---|
token | String 类型,动态密钥。 | 如频道使用了 Token,则为必填 |
recordingConfig | JSON Object,用于配置音频流订阅、转码、输出音频属性。 | 必填 |
recordingFileConfig | JSON Object,录制文件设置。 | 选填 |
storageConfig | JSON Object,第三方云存储设置。 | 必填 |
请求示例如下:
-
请求 URL:
HTTPhttps://api.sd-rtn.com/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/mode/mix/start
-
请求 Body 内容:
JSON{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"token": "<token if any>",
"recordingConfig": {
"maxIdleTime": 30,
"streamTypes": 2,
"audioProfile": 1,
"channelType": 0,
"videoStreamType": 0,
"transcodingConfig": {
"height": 640,
"width": 360,
"bitrate": 500,
"fps": 15,
"mixedVideoLayout": 1,
"backgroundColor": "#FF0000"
},
"subscribeVideoUids": [
"123",
"456"
],
"subscribeAudioUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"recordingFileConfig": {
"avFileType": [
"hls",
"mp4"
]
},
"storageConfig": {
"accessKey": "xxxxxxf",
"region": 3,
"bucket": "xxxxx",
"secretKey": "xxxxx",
"vendor": 2,
"fileNamePrefix": [
"directory1",
"directory2"
]
}
}
}
3. 停止录制
录制完成后,调用 stop
方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire
方法请求一个新的 Resource ID。
请求示例如下:
-
请求 URL:
HTTPhttps://api.sd-rtn.com/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/mix/stop
-
请求 Body 内容:
JSON{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {}
}
录制生成文件
录制后共生成一个 M3U8 文件和多个 TS 文件。根据 avFileType
字段的设置,还有可能生成一个或多个 MP4 文件。录制文件的切片和命名原则详见录制文件介绍。
合流录制生成的文件如下图所示:
开发注意事项
Web 端用户和 Native 及框架端用户在用户中途停止发流或退出频道后的显示策略有所不同,详见下表:
发流端类型 | 取消发布本地视频 | 禁用视频轨道 | 退出频道 |
---|---|---|---|
Native 及框架端 |
|
| 优先显示画布背景图,如无画布背景图则显示画布背景色。 |
Web 端 | Web SDK 3.x 及以前,显示为画布背景图或画布背景色。 | Web SDK 3.x 及以前,显示为黑屏。 | 优先显示画布背景图,如无画布背景图则显示画布背景色。 |
Web SDK 4.x 及以后,
| Web SDK 4.x 及以后,
| 优先显示画布背景图,如无画布背景图则显示画布背景色。 |
参考文档
相关文档
在合流录制过程中,你还可以参考如下文档:
API 参考
你可以参考以下方法了解字段详情: