本地录制
功能简介: 用户可以对通讯过程进行录制并保存到终端设备。
- 录制画面可以根据业务场景自由拼接组合,包括本地摄像头、远端摄像头、远端共享的屏幕、影音播放、图片。支持同时启动多个录制。
- 录制格式支持mp4、ts、flv,如果选择了flv和ts两种格式,即使录制过程中程序出现异常了,崩溃之前的录像仍然可用。
- 对于金融双录等安全性要求高的特定领域,支持对录制的文件进行加密,录制后直接把录像传到标准http服务器、OSS或者云屋服务器。
- 本地加密过的录像只能通过SDK提供的播放器播放。
本地录制使用流程如下:
1.创建混图器
录制文件时,可以根据业务需要,选择不同的录制布局。如下有 左右布局和 画中画布局示例。
- 接口调用:
//混图器编号
string mixerID = "1";
//混图器尺寸为640*360,帧率为15,其他参数使用默认值
string mixerCfg = "{\"width\":640,\"height\":360,\"frameRate\":15}";
//混图器内容配置:混图对象来源为摄像头,保持图像原始比例
//left,top,width,height 在混图画面中的区域(相对于混图器尺寸)
//camid:摄像头编号
string contentObj = "[\
{\"type\":0,\"keepAspectRatio\":1,\"left\":0,\"top\":0,\"width\":320,\"height\":180,\"param\":{\"camid\":\"usr1.1\"}},\
{\"type\":0,\"keepAspectRatio\":1,\"left\":320,\"top\":0,\"width\":320,\"height\":180,\"param\":{\"camid\":\"usr2.1\"}}\
]";
//创建混图器
axVideoSDK.createLocMixer(mixerID, mixerCfg, contentObj);
(1)左右布局示例图:
相关API请参考:
2.开启本地录制
添加混图器输出后,会触发axMeeting.locMixerOutputInfo通知,如果输出异常,将自动停止录制。
- 接口调用:
//混图器编号
string mixerID = "1";
//摄像头录入的视频输出到d:/1.mp4文件
string mixerOutput = "[{\"type\":0,\"filename\":\"D:/1.mp4\"}]";
int ret = axVideoSDK.addLocMixerOutput(mixerID, mixerOutput);
if ( ret ) {
//成功或者出错处理
...
}
相关API请参考:
3.录像文件事件处理
录制过程中都会触发此事件。在此可以实时获得录像文件当前的时长、大小,以及录像文件异常等信息。
- 回调通知:
//录制文件信息回调通知
void Meeting_locMixerOutputInfo(object sender, ICloudroomVideoMeetingEvents_locMixerOutputInfoEvent e)
{
...
//录制状态处理
}
相关API请参考:
4.更新图像内容
- 接口调用:
//混图器编号
string mixerID = "1";
//混图器内容:画中画布局(示例图如下, 底层640*360, 上层160*90),底层为user1的1号摄像头, 上层为user2的1号摄像头
string mixerContent = "[\
{\"type\":0,\"keepAspectRatio\":1,\"left\":0,\"top\":0,\"width\":640,\"height\":360,\"param\":{\"camid\":\"usr1.1\"}},\
{\"type\":0,\"keepAspectRatio\":1,\"left\":475,\"top\":265,\"width\":160,\"height\":90,\"param\":{\"camid\":\"usr2.1\"}}\
]";
//更新混图器内容
int errCode = axVideoSDK.updateLocMixerContent(mixerID,mixerContent);
if ( errCode) {
...
}
(2)画中画布局示例图:
相关API请参考:
5.结束
- 接口调用:
//混图器编号
string mixerID = "1";
//消毁混图器, 录像文件将自动停止并保存
axVideoSDK.destroyLocMixer(mixerID);
相关API请参考: