本地录制

功能简介:
用户可以对通讯过程进行录制并保存到终端设备。

  • 录制画面可以根据业务场景自由拼接组合,包括本地摄像头、远端摄像头、本地屏幕、远端共享的屏幕、播放的视频文件、图片。支持同时启动多个录制。
  • 录制格式支持mp4、ts、flv、avi,如果选择了flv和ts两种格式,即使录制过程中程序崩溃了,崩溃之前的录像仍然可用。
  • 对于金融双录等安全性要求高的特定领域,我们支持对录制的文件进行加密,录制后直接把录像传到我们服务器,本地加密过的录像即使没有删除也只能通过SDK提供的播放器播放。

本地录制使用流程如下:

  1. 创建混图器
  2. 开启本地录制
  3. 录像文件事件处理
  4. 更新图像内容
  5. 结束

1.创建混图器

录制文件时,可以根据业务需要,选择不同的录制布局。如下有 左右布局画中画布局示例。

  • 接口调用:

var mixerID = "1";//混图器编号
var recordWidth = 640; //录制画布的宽高
var recordHeight = 360;

var SWidth = recordWidth; //图像占据宽高
var rate = 16/9; //假设图像比例为16:9
var SHeight = recordWidth/rate;

//配置混图器编码参数(此处:尺寸:360p, frameRate:8, 码率:350kbps,画质:28)
var mixerCfg = {"width":recordWidth,
                "height":recordHeight,
                "frameRate":8,
                "bitRate":350000,
                "defaultQP":28,
                "gop":120
                };

//配置混图器内容: 左右布局(示例图如下),左边为user1的1号摄像头, 右边为user2的1号摄像头
var mixerContent = [];
var leftCon = {}, rightCon = {};  //左右视频图像的内容配置
leftCon["type"] = 0; //0: 录制类型为视频
leftCon["left"] = 0 ;
leftCon["top"] = (recordHeight-sHeight/2)/2;   //视频图像垂直居中
leftCon["width"] = sWidth/2;
leftCon["height"] =  sHeight/2;
leftCon["param"] = {"camid":"user1.1"};
leftCon["keepAspectRatio"] = 1;
mixerContent.push(leftCon);

rightCon["type"] = 0; //0: 录制类型为视频
rightCon["left"] = sWidth/2;
rightCon["top"] = (recordHeight-sHeight/2)/2;   //视频图像垂直居中
rightCon["width"] = sWidth/2;
rightCon["height"] =  sHeight/2;
rightCon["param"] = {"camid":"user2.1"};
rightCon["keepAspectRatio"] = 1;
mixerContent.push(rightCon);
							               
//创建混图器
CRVideo_ERR_DEF errCode = CRVideo_CreateLocMixer(mixerID, mixerCfg, mixerContent);
if ( errCode != CRVideo_NOERR )
{
    //出错
    ...
}else
{
    //成功
}

(1)左右布局示例图: