云端录制
功能简介: 在服务器上对房间内的音视频、白板、屏幕共享等通讯内容进行录制,支持自定义录制内容和布局,录制文件在服务器保存,可以通过WEB API下载和删除。
云端录制使用流程如下:
1. 开始云端录制
录制文件时,可以根据业务需要,选择不同的录制布局。如下代码为创建左右布局的相关示例。
左右布局示例图:
- 混图器参数配置
//配置混图器编码参数:尺寸为640*360,帧率为15,其他采用默认设置
MixerCfg mixerCfg = new MixerCfg();
mixerCfg.frameRate = 15;
mixerCfg.dstResolution = new Size(640, 360);
- 混图器内容配置 - 左右布局
//图像内容集合 - 创建左右布局的摄像头录制内容
ArrayList<MixerCotent> contents = new ArrayList<MixerCotent>();
//自己的摄像头(左边布局), 设置摄像头录制视频大小,由于左右布局, 宽度只有录制布局的一半
Rect leftRect = new Rect(0, 0, mixerCfg.dstResolution.width/2, mixerCfg.dstResolution.height);
MixerCotent leftVideoItem = MixerCotent.createVideoContent(myUserID, (short)-1, leftRect);
//添加到内容列表
contents.add(leftVideoItem);
//其他人的摄像头(右边布局)
Rect rightRect = new Rect(mixerCfg.dstResolution.width/2, 0, mixerCfg.dstResolution.width, mixerCfg.dstResolution.height);
MixerCotent rightVideoItem = MixerCotent.createVideoContent(otherUserID, (short)-1, rightRect);
//添加到内容列表
contents.add(rightVideoItem);
- 混图器输出配置
//配置混图器输出
ArrayList<MixerOutPutCfg> cfgs = new ArrayList<MixerOutPutCfg>();
MixerOutPutCfg outputCfg = new MixerOutPutCfg();
//设置混图输出类型为录像文件
outputCfg.type = MIXER_OUTPUT_TYPE.MIXOT_FILE;
//录制文件路径为:/sdcard/_Android.mp4
outputCfg.fileName = "/sdcard/_Android.mp4";
cfgs.add(outputCfg);
- 根据配置开启云端录制
HashMap<String, MixerCfg> mixerCfgs = new HashMap<String, MixerCfg>();
mixerCfgs.put("KEY_SVR_MIXERID", mixerCfg);
HashMap<String, ArrayList<MixerOutPutCfg>> mixerOutputCfgs = new HashMap<String, ArrayList<MixerOutPutCfg>>();
ArrayList<MixerOutPutCfg> outputCfgs = new ArrayList<MixerOutPutCfg>();
outputCfgs.add(outputCfg);
mixerOutputCfgs.put("KEY_SVR_MIXERID", outputCfgs);
HashMap<String, ArrayList<MixerCotent>> mixerContents = new HashMap<String, ArrayList<MixerCotent>>();
mixerContents.put("KEY_SVR_MIXERID", contents);
//开启云端录制
CRVIDEOSDK_ERR_DEF rst = CloudroomVideoMeeting.getInstance().startSvrMixer(mixerCfgs, mixerContents, mixerOutputCfgs);
if(rst != CRVIDEOSDK_ERR_DEF.CRVIDEOSDK_NOERR)
{
//开启云端录制出错!
...
}
- 回调通知:
//云端录制状态变化通知
void svrMixerStateChanged(String operatorID, MIXER_STATE state, CRVIDEOSDK_ERR_DEF err)
{
...
}
相关API请参考:
相关结构定义请参考:
2. 云端录制文件信息变化通知
在此可获得录像文件的时长、大小、录像文件异常等信息
void svrMixerOutputInfo(MixerOutputInfo info){
if ( info.state==MIXER_OUTPUT_STATE.OUTPUT_ERR ){
//录像文件出错,info.errCode中有错误原因
}
}
相关API请参考:
3. 更新云端录制内容
如下为创建画中画布局作为更新后的云端录制内容
画中画布局示例图:
- 混图器内容配置 - 画中画布局
//更新为画中画模式
// 图像内容集合 - 创建画中画布局的摄像头录制内容,
ArrayList<MixerCotent> contents = new ArrayList<MixerCotent>();
//自己的摄像头(充满布局)
Rect bigRect = new Rect(0, 0, mixerCfg.dstResolution.width, mixerCfg.dstResolution.height);
MixerCotent bigVideoItem = MixerCotent.createVideoContent(myUserID, (short)-1, bigRect);
// 添加到内容列表
contents.add(bigVideoItem);
//其他人的摄像头(部分布局)
Rect smallRect = new Rect(0, 0, mixerCfg.dstResolution.width/5, mixerCfg.dstResolution.height/5);
MixerCotent smallVideoItem = MixerCotent.createVideoContent(otherUserID, (short)-1, smallRect);
// 添加到内容列表
contents.add(smallVideoItem);
- 更新混图器内容
HashMap<String, ArrayList<MixerCotent>> mixerContents = new HashMap<String, ArrayList<MixerCotent>>();
mixerContents.put("KEY_SVR_MIXERID", contents);
//更新录制内容
CloudroomVideoMeeting.getInstance().updateSvrMixerContent(mixerContents);
相关API请参考:
4. 获取云端录制状态
//获取云端录制状态
MIXER_STATE state = CloudroomVideoMeeting.getInstance().getSvrMixerState()
相关API请参考:
相关结构定义请参考:
5.停止云端录制
停止云端录制,也会触发事件svrMixerStateChanged
- 接口调用:
CloudroomVideoMeeting.getInstance().stopSvrMixer();
相关API请参考: