云端录制
功能介绍
Web SDK 提供云端录制能力,由服务器侧完成音视频采集、混流与文件生成;不支持在浏览器端进行本地录制。
云端录制有两种模式:
| 模式 | 功能描述 |
|---|---|
| 单流模式 | 支持将房间内的部分或全部视频及音频直接转储成文件,各流独立生成音视频文件;服务器开销小 |
| 合流模式 | 支持将房间内视频、屏幕共享、影音共享、白板、音频等混合录制成一个文件;服务器开销较大 |
两种模式的一些特性对比:
| 对比项 | 单流模式 | 合流模式 |
|---|---|---|
| 开启方式 | CRVideo_CreateCloudMixer 参数 CRVideo_CloudMixerCfgObj 的 mode 为 1 |
CRVideo_CreateCloudMixer 参数 CRVideo_CloudMixerCfgObj 的 mode 为 0 |
| 图像内容 | 房间内视频;如需录制桌面,可使用 桌面摄像头 方式,参见 videoFileCfg.subscribeVideos |
房间内视频、屏幕共享、影音共享、白板等;在 videoFileCfg.layoutConfig 中添加 CRVideo_MixerContentObj |
| 内容布局 | 不支持 | 支持自由布局;layoutConfig 列表中靠前的元素在图像底层;left、top、width、height 控制位置与大小 |
| 添加水印 | 不支持;只能在源端视频侧添加水印 | 可添加时间戳、文本、图像等;参见 CRVideo_MixerContentObj 中 type 的定义 |
| 添加音频 | 可在视频录像中添加自己或房间内所有人的声音;参见 videoFileCfg.aStreamType |
可添加房间内所有人或指定人员的声音;两人通话场景可配置左右声道;参见 aChannelType、aChannelContent |
| 独立音频文件 | 可为指定人员或全部人员各生成独立音频文件;参见 audioFileCfg |
可为房间生成独立音频文件;两人通话场景可生成左右声道音频文件;参见 audioFileCfg |
| 任务数量 | 启一个录制任务即可为全部或指定视频列表各生成一个录像文件 | 可开启多个合流任务,每个合流任务生成一个录像文件 |
| 录像质量 | 不支持;只能通过调整源端图像质量控制 | 可控制分辨率、帧率、码率等;参见 vWidth、vHeight、vFps、vBps、vQP |
| 更新内容 | 录制中可调整录制的视频列表 | 录制中可修改图像内容、水印及布局 |
| 服务器开销 | 视频不重新编解码,CPU、内存开销小 | 解码混图再编码,CPU 开销大;降低分辨率、帧率与内容数量可有效降低开销 |
| 第三方存储 | 默认存储在 SDK 服务器;可通过 storageConfig 存到第三方存储 |
同左 |
配置字段详见 CRVideo_CloudMixerCfgObj。
须在成功进入房间后,方可创建云端混图器。
须联系商务为账号开通「云端录制服务」;未开通时创建可能失败。
使用说明
本文主要以 SDK 端发起云端录制为例。若由应用服务器发起,可参考以下 WEB API:
WEB API 开启云端录制
WEB API 停止云端录制
WEB API 更新云端录制
WEB API 录制任务状态回调
WEB API 录制事件回调
WEB API 录像文件查询
1. 开通云端录制服务
- 请确保您已成功 注册 账号。
- 请联系商务为对应账号开通「云端录制服务」。
2. 开始云端录制
合流模式、左右布局示例(1280×720,15 帧):

const cloudMixerCfg = {
mode: 0,
videoFileCfg: {
svrPathName: "/2021-09-24/2021-09-24_13-47-41_Win32_73542046.mp4",
vWidth: 1280,
vHeight: 720,
vFps: 15,
layoutConfig: [{
type: 0,
top: 180,
left: 0,
width: 640,
height: 360,
keepAspectRatio: 1,
param: { camid: "Usr1.-1" },
}, {
type: 0,
top: 180,
left: 640,
width: 640,
height: 360,
keepAspectRatio: 1,
param: { camid: "Usr2.-1" },
}],
},
};
var mixerID = CRVideo_CreateCloudMixer(cloudMixerCfg);
单流模式示例(为房间内所有人录制独立音视频文件):
const cloudMixerCfg = {
mode: 1,
audioFileCfg: {
svrPathName: "/2021-09-24/会议号/$UID$_$TIME$.mp3",
subscribeAudios: ["_cr_all_"],
},
videoFileCfg: {
aStreamType: 1,
svrPathName: "/2021-09-24/会议号/$UID$_cam$CAMID$_$TIME$.mp4",
subscribeVideos: ["_cr_allDefCam_"],
},
};
var mixerID = CRVideo_CreateCloudMixer(cloudMixerCfg);
可多次调用 CRVideo_CreateCloudMixer 传入不同参数,同时开启多个云端录制。
若需保存到第三方云存储,请在创建时传入 storageConfig,详见 CRVideo_CloudStorageConfig。
相关 API 请参考:
3. 更新云端录制内容
录制过程中可更新布局与混流内容(不可更改混图器规格、输出目标)。画中画布局示例:

var cloudMixerCfg = {
videoFileCfg: {
layoutConfig: [{
type: 0,
top: 0,
left: 0,
width: 1280,
height: 720,
keepAspectRatio: 1,
param: { camid: "Usr1.-1" },
}, {
type: 0,
top: 495,
left: 880,
width: 400,
height: 225,
keepAspectRatio: 1,
param: { camid: "Usr2.-1" },
}],
},
};
CRVideo_UpdateCloudMixerContent(mixerID, cloudMixerCfg);
相关 API 请参考:
4. 停止云端录制
停止云端录制后,也会触发 CRVideo_CloudMixerStateChanged 通知。
CRVideo_DestroyCloudMixer(mixerID);
相关 API 请参考:
5. 云端录制回调通知
录制过程中会有录制状态变化事件、录制文件信息变化通知,可实时获得录制状态、文件当前时长与大小,以及录制异常等信息。
CRVideo_CloudMixerStateChanged.callback = function (mixerID, state, exParam, operUserID) {
// state 参见 CRVideo_MIXER_STATE
};
CRVideo_CloudMixerOutputInfoChanged.callback = function (mixerID, outputInfo) {
// 文件时长、大小、上传状态等,参见 CRVideo_CloudMixerOutputInfo
};
CRVideo_CreateCloudMixerFailed.callback = function (mixerID, sdkErr) {
// 创建失败
};
相关 API 请参考:
- CRVideo_CloudMixerStateChanged
- CRVideo_CloudMixerOutputInfoChanged
- CRVideo_CreateCloudMixerFailed
- CRVideo_CloudMixerInfoChanged
- CRVideo_GetCloudMixerInfo
- CRVideo_GetAllCloudMixerInfo
6. 获取录像
录像停止后,录像文件会开始上传到录像文件存储服务器中(可关注 CRVideo_CloudMixerOutputInfoChanged 通知,得到上传完成事件)。

若将录像保存到第三方云存储,请使用第三方提供的接口或管理页获取。