当用户希望录制当前会议视频时,可通过录制 API 实现。 平台 API 封装了小鱼易连平台录制功能,开发者通过 SDK 可快速实现录制功能。 录制文件将保存在小鱼易连云平台,结合服务端 API 可对录制文件进行后续查询下载等操作。
此文档仅适用于v3.x+版本
录制功能的实现也主要分为:启动录制、停止录制和注册录制状态回调。
xyRTC.startCloudRecord()
xyRTC.stopCloudRecord()
xyRTC.on('RecordingStateChanged', (e: IRecordStateChange) => {
if(e.recordState === RecordStatus.DISABLE){
// 无录制权限
}
// 录制过程中,由于当前参会者和会控都有可能操作,所以需要自己区分是否是本人在录制
let isLocalRecord: boolean | undefined;
if(e.recordState === RecordStatus.ACTING){
isLocalRecord = true;
}else if(e.recordState === RecordStatus.IDLE || e.recordState === RecordStatus.IDLE_BY_OTHERS){
isLocalRecord = false;
}
// 记录是否本人在录制 cacheIsLocalRecord默认false
cacheIsLocalRecord = isLocalRecord ?? cacheIsLocalRecord;
if (e.recordState === RecordStatus.IDLE) {
// 录制完成
}
}
interface IRecordStateChange {
// recordState 更新
recordState: RecordStatus;
reason: string;
message: string;
}
/**
* 云端录制状态
*
* @param IDLE 本地录制未开始或录制结束
* @param ACTING 本地录制进行中
* @param PAUSE_BY_OTHERS 录制被暂停 这里有两种情况 1. 本地正在录制中,被会控暂停 2. 其他人正在录制中,被会控暂停录制
* @param IDLE_BY_OTHERS 录制结束 两种情况 1. 本地正在录制中或者暂停中,被会控结束录制 2. 其他人录制结束
* @param ACTING_BY_OTHERS 录制进行中 两种情况 1. 本地录制被暂停后又被恢复录制 2. 其他人录制进行中
* @param DISABLE 录制功能被禁用,无权限
*/
enum RecordStatus {
IDLE,
ACTING,
PAUSE_BY_OTHERS,
IDLE_BY_OTHERS,
ACTING_BY_OTHERS,
DISABLE,
}
上述示例代码中,定义了isLocalRecord
表示当前参会者是否正在录制中,判断逻辑是:
ACTING
时,设置isLocalRecord
为true;IDLE
和IDLE_BY_OTHERS
),就说明录制仍处于暂停或者录制中,isLocalRecord
仍然是true;IDLE
或者IDLE_BY_OTHERS
,说明录制结束,此时isLocalRecord
置为false;ACTING
,说明当前参会者没有开启过录制,这种情况下如果录制状态出现了ACTING_BY_OTHERS
或者PAUSE_BY_OTHERS
就能说明是远端正在录制中或者录制暂停中;如果isLocalRecord
是false并且录制状态是 PAUSE_BY_OTHERS
或 ACTING_BY_OTHERS
,需要禁止本地开启录制;