🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### **开始录制** startRecord(recordOpt: AnyChatRecordOpt, recordEvent: AnyChatRecordEvent): number #### 接口说明: 开始录制,录像可以录制单方视频流,也可以录制多方视频流。 #### 返回值: 录制操作返回的状态码(0代表录制成功 ) #### 接口参数简介 : | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | recordOpt| AnyChatRecordOpt | 录制配置类 | 是| | recordEvent| AnyChatRecordEvent | 录制结果回调事件 | 是| ### **开始录制(主要用于录像状态检测)** startRecord( recordOpt: AnyChatRecordOpt, notifyEvent: AnyChatRecordNotifyEvent, recordEvent: AnyChatRecordEvent): number #### 接口说明: 开始录制,主要用于服务器录制、服务器合成流录制时,检测录像状态是否正常。 #### 返回值: 录制操作返回的状态码(0代表录制成功 ) #### 接口参数简介 : | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | recordOpt| AnyChatRecordOpt | 录制配置类 | 是| | notifyEvent| AnyChatRecordNotifyEvent| 录像状态回调(针对服务器录制、服务器合成流) | 是| | recordEvent| AnyChatRecordEvent | 录制结果回调事件 | 是| AnyChatRecordOpt录制配置类简介: | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | userID | number | 用户id | 是 | | recordLayoutOpt | AnyChatRecordLayoutOpt | 录制画面布局配置类 | 是 | | width | number | 录制画面宽度 | 否 | | height | number | 录制画面高度 | 否 | | mode | number | 录制模式<br>BRAC_RECORD_LOCAL_MODE--本地录制(默认)<br>BRAC_RECORD_SERVER_MODE --服务器端录制 <br> BRAC_RECORD_STREAM_MODE --服务器端合成流录制 |否 | | content | number | 录制内容<br>BRAC_RECORD_DEFAULT_CONTENT--既录音又录像(默认) <br>BRAC_RECORD_AUDIO--只录音 <br>BRAC_RECORD_VIDEO--只录像 | 否 | | fileType | number | 录制文件类型<br>BRAC_RECORD_FILE_TYPE_MP4-- MP4(默认) <br> BRAC_RECORD_FILE_TYPE_WMV—WMV <br>BRAC_RECORD_FILE_TYPE_FLV-- FLV <br> BRAC_RECORD_FILE_TYPE_MP3-- MP3| 否| | fileName | string | 录制文件名 | 否 | | category | string | 设置录像文件保存目录(针对服务器录制有效) | 否 | | localFilePath | string | 本地录制文件存放目录 | 否 | | encryptionKey | string | 本地录制文件加密的密钥 <br>为空不加密,传了密钥普通加密 | 否 | | recordClipMode| number | 裁剪模式<br>BRAC_RECORD_CLIPMODE_UNKNOW--未知模式,不需要做裁剪时使用<br>BRAC_RECORD_CLIPMODE_AUTO--以最大比例进行裁剪,然后再整体拉伸,画面保持比例,但被裁剪画面较大 <br> BRAC_RECORD_CLIPMODE_OVERLAP--重叠模式,只取最大有效部分,对边缘进行裁剪 <br>BRAC_RECORD_CLIPMODE_SHRINK--缩小模式,缩小到合适的比例,不进行裁剪 <br>BRAC_RECORD_CLIPMODE_STRETCH--平铺模式,不进行裁剪,但可能导致画面不成比例 <br> | statusnotify | number | 录像状态回调通知时间设置,默认时间为10秒(针对服务器录制、服务器合成流录制有效) | 否 | | videobitrate | number| 录制视频码率 单位:bps| 否 | | audiobitrate | number| 录制音频码率 单位:bps| 否 | | fps| number | 录像帧率| 否 | | channels| number | 录制音频通道: 1 单通道, 2双通道| 否 | | isOpenMD5 | boolean|录像完成回调是否返回文件MD5值| 否 | AnyChatRecordLayoutOpt 录制画面布局配置类简介: | 返回值 | 名称 |说明 |备注 | | --- | --- | --- | --- | | recordlayout| number | 视频布局,视频流数量,即多少个视频画面| 是| | layoutstyle| number | 三路流和四路流的视频画面布局风格:0-并列风格(默认) ,1-画中画风格,2-三画面并列风格| 否 | streamlist | ArrayList | 录制对象AnyChatRecordStreamOpt的list集合。<br>AnyChatRecordStreamOpt对象包含三个属性:<br>1、userID(string)录制对象ID<br>2、streamIndex(number):录制对象的视频流号,移动端默认为0;<br>3、recordIndex(number):录制对象在录制视频上的位置 | 否 | AnyChatRecordNotifyEvent回调简介: | 返回值 | 名称 |说明 |备注 | | --- | --- | --- | --- | | void | onRecordStatusDone| result(AnyChatResult): 操作状态信息<br>JsonData(JSONObject):返回结果 | result.errCode: 0表示成功<br>其他表示错误代号.<br>result.msg: 错误描述| AnyChatRecordEvent回调简介: | 返回值 | 名称 |说明 |备注 | | --- | --- | --- | --- | | void | onRecordStart | result(AnyChatResult): 操作状态信息<br>JsonData(object):返回结果 | result.errCode: 0表示成功<br>其他表示错误代号.<br>result.msg: 错误描述.<br>JsonData.userId:用户id<br>JsonData.status:录像状态,值为"prepare" "start"<br>JsonData.statuscode:录像状态,1为prepare 2为start| | void | onRecordDone | result(AnyChatResult): 操作状态信息<br>JsonData(object):返回结果 | result.errCode: 0表示成功<br>其他表示错误代号.<br>result.msg: 错误描述.<br>JsonData.filePath:录像文件地址<br>JsonData.elapse:录像文件时长<br>JsonData.startTime:录像开始时间<br>JsonData.endTime:录像结束时间<br>JsonData.filemd5:录像md5| 示例代码 startRecord(): number { let recordOpt: AnyChatRecordOpt = new AnyChatRecordOpt(); recordOpt.setMode(AnyChatRecordMode.BRAC_RECORD_LOCAL_MODE);// 设置为本地录制 if (null != flePath) { recordOpt.setLocalFilePath(flePath + "/record");// 设置本地存储路径 } recordOpt.setRecordClipMode(AnyChatRecordClipMode.BRAC_RECORD_CLIPMODE_AUTO);// 设置裁剪模式 recordOpt.setUserID(-1); recordOpt.setContent(AnyChatRecordContent.BRAC_RECORD_DEFAULT_CONTENT);// 设置既录音又录像 let streamlist: ArrayList<AnyChatRecordStreamOpt> = new ArrayList<AnyChatRecordStreamOpt>(); let recordEntity: AnyChatRecordStreamOpt = new AnyChatRecordStreamOpt(); recordEntity.setUserID(-1); //设置录制对象的视频流号 recordEntity.setStreamindex(0); //设置录制对象在录制画面上的位置 recordEntity.setRecordindex(0); streamlist.add(recordEntity); let recordEntity_1: AnyChatRecordStreamOpt = new AnyChatRecordStreamOpt(); recordEntity_1.setUserID(dwTargetUserId); //设置录制对象的视频流号 recordEntity_1.setStreamindex(0); //设置录制对象在录制画面上的位置 recordEntity_1.setRecordindex(1); streamlist.add(recordEntity_1); //设置图片水印参数信息 recordOpt.setImagepath(picPath); let fileName: string = "" + System.currentTimeMillis(); recordOpt.setFileName(fileName); let anyChatRecordLayoutOpt: AnyChatRecordLayoutOpt = new AnyChatRecordLayoutOpt(); anyChatRecordLayoutOpt.setRecordlayout(2); anyChatRecordLayoutOpt.setStreamlist(streamList); recordOpt.setAnyChatRecordLayoutOPt(anyChatRecordLayoutOpt); return AnyChatSDK.getInstance().startRecord(recordOpt, this); }