实现单流转码录制
云端录制支持单流录制、合流录制和页面录制三种模式,其中单流录制模式指分别录制频道中每个 UID 的音频流和视频流,录制结束后每个 UID 会生成对应的音频文件和视频文件。
本文介绍如何使用云端录制的 RESTful API 并设置核心字段,进行单流转码录制,并生成特定格式的文件。如果你不需要指定单流录制生成的文件格式,可以使用单流音频不转码录制。
前提条件
开始前,请参考使用 RESTful API 开始云端录制进行一次完整的录制流程体验。
实现步骤
本节介绍如何在申请录制服务器资源后,实现单流音视频转码录制。如果普通的单流转码录制不满足你的业务需求,你可以进一步设置延时转码。
开始录制
调用 start
方法开始云端录制。
请求示例
以下介绍开始单流音频转码录制请求的关键配置,确保你进行正确设置以实现预期的录制效果。
-
在调用
start
方法时,将mode
参数设置为individual
,开启单流录制模式。注意录制模式的设置必须在开始录制的时候完成,不支持在录制开始后切换模式。
-
设置
recordingConfig
中的如下参数:字段 配置内容 recordingConfig.streamTypes
订阅媒体流类型, 2
为订阅音频和视频。具体设置参见streamTypes
参数说明。recordingConfig.streamMode
媒体流输出模式,为获得能直接播放的 MP4 文件,建议设置为 standard
(标准模式)或default
(默认模式)。 -
参照快速开始配置
storageConfig
相关参数。
单流音视频转码录制,不开启延时转码,请求 Body 示例如下:
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<your_app_id>/cloud_recording/acquire' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: <http_basic_auth>' \
--data '{
"cname": "show",
"uid": "123",
"clientRequest": {
"token": "<your_token>",
"recordingConfig": {
"channelType": 1,
"streamTypes": 2,
"streamMode": "default",
"videoStreamType": 0,
"maxIdleTime": 30,
"subscribeAudioUids": [
"123",
"456"
],
"subscribeVideoUids": [
"123",
"456"
],
"subscribeUidGroup": 0
},
"recordingFileConfig": {
"avFileType": [
"hls"
]
},
"storageConfig": {
"vendor": 2,
"region": 3,
"bucket": "<your_storage_bucket_name>",
"accessKey": "<your_storage_access_key>",
"secretKey": "<your_storage_secret_key>",
"fileNamePrefix": [
"quickstart",
]
},
}
}
响应示例
{
"cname": "show",
"uid": "123",
"resourceId": "SGXETXXX",
"sid": "04a85XXX"
}
你需要复制 sid
以备后用。
停止录制
录制完成后,调用 stop
方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire
方法请求一个新的 Resource ID。
请求示例
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/individual/stop' \
--header 'Content-Type: application/json' \
--data '{
"cname": "show",
"uid": "123",
"clientRequest": {
"async_stop": false
}
}'
响应示例
{
"resourceId": "SGXETXXX",
"sid": "04a85XXX",
"serverResponse": {
"uploadingStatus": "uploaded"
},
"cname": "show",
"uid": "123"
}
uploadingStatus
字段表示录制文件上传状态,当值为 uploaded
时表示录制文件已上传至第三方云存储。
参考信息
录制文件音视频编码配置
单流录制模式下录制文件的音视频编码配置如下:
- 音频编码配置:采样率固定为 48 kHz,声道数和码率与原始音频流一致。
- 视频编码配置:与原始视频流一致。
根据录制内容的不同,录制生成的文件如下表所示:
录制内容 | 字段设置 | 录制生成文件 |
---|---|---|
仅录制音频 | streamTypes 设为 0 | 每个 UID 生成一个 M3U8 文件和多个 TS 文件。TS 文件内仅存储该 UID 的音频数据。 |
仅录制视频 | streamTypes 设为 1 | 每个 UID 生成一个 M3U8 文件和多个 TS/WebM 文件。TS/WebM 文件内仅存储该 UID 的视频数据。 |
同时录制音视频,且使用录制的标准模式 | streamTypes 设为 2 ,streamMode 设为 standard 。 |
|
同时录制音视频,且使用录制的默认模式 | streamTypes 设为 2 ,streamMode 设为 default 。 | 每个 UID 分别生成 M3U8 音频索引文件和视频索引 HLS 文件,以及多个 TS 音频切片文件和 TS 视频切片文件。 |
如下展示单流转码录制,同时录制音视频时生成的文件,以频道中有两个用户 uid 1
和 uid 2
为例:
- standard 模式
- default 模式
生成后的 M3U8 或 MPD 格式的音频、视频文件可以直接播放。
开发注意事项
在进行单流录制过程中,你需要关注如下注意事项:
-
使用标准模式录制(
streamMode
为standard
),如果录制过程中将 Native 端切换到 Web 端(或反之),录制结束后你会获得 M3U8 格式和 MPD 格式的两个音视频索引文件,无法连贯播放整个录制过程。 -
如果在录制过程中禁用视频轨道,则录制效果详见下表:
发流端类型 禁用视频轨道的方法 录制效果 Native 端 调用 muteLocalVideoStream
或disableVideo
方法不继续生成视频切片文件,在本切片内用户画面显示最后一帧。 Web 端 调用 setEnabled
方法不继续生成视频切片文件,在本切片内用户画面显示最后一帧。
相关文档
在单流转码录制过程中,你还可以参考如下文档:
API 参考
你可以参考以下方法了解字段详情: