企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### **开始录制** - (void)startRecord:(AnyChatRecordOpt *)opt; 接口说明: 开始录制,录像可以录制单方视频流,也可以录制多方视频流。 初始化录制配置参数 (开始录制时有些参数是必传) AnyChatRecordOpt *recordOpt = [[AnyChatRecordOpt alloc]init]; self.recordOpt = recordOpt; 接口参数简介: | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | recordOpt| AnyChatRecordOpt | 录制配置类 | 是| AnyChatRecordOpt录制配置类简介: | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | userID | NSString | 用户id | 是 | | recordLayoutOpt | AnyChatRecordLayoutOpt | 录制画面布局配置类 | 是 | | width | CGFloat | 录制画面宽度(默认640) | 否 |BRAC_RECORD_STREAM_MODE | height | CGFloat | 录制画面高度 (默认480) | 否 | | videobitrate | int | 视频码率 | 否 | | audiobitrate | int | 音频码率 | 否 | | fps | int | 录像帧率 | 否 | | channels | int | 音频通道 1 单通道 或者 2 双通道 | 否 | | samplepersec | int | 音频采样率 48000 、 16000 等 | 否 | | mode | BRAC_RecordMode | 录制模式<br>BRAC_RECORD_LOCAL_MODE --本地录制(默认)<br>BRAC_RECORD_SERVER_MODE --服务器端录制<br> BRAC_RECORD_STREAM_MODE --服务器端合成流录制 BRAC_RECORD_LOCAL_STREAM_MODE --本地合成流录制|否 | | content | BRAC_RecordContent | 录制内容<br>BRAC_RECORD_DEFAULT_CONTENT--既录音又录像(默认)<br>BRAC_RECORD_AUDIO--只录音<br>BRAC_RECORD_VIDEO--只录像 | 否 | | fileType | BRAC_RecordFileType | 录制文件类型<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 | NSString | 录制文件名 | 否 | | category | NSString | 录像文件保存目录(使用服务器录制或服务器合成流录制有效) | 否 | | encryptionKey | NSString | 加密录像视频文件的加密秘钥,值为空表示不加密 | 否 | | localFilePath | NSString | 本地录制文件存放目录 | 否 | | recordClipMode| BRAC_RecordClipMode | 裁剪模式:<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--平铺模式 | 否 | | picOpt | AnyChatPicMarkOpt | 在录像文件中添加图片水印 | 否 | | textOpt | AnyChatTextMarkOpt | 在录像文件中添加文字水印| 否 | | strJson | string | 录像自定义参数 | 否 | | statusnotify | number | 录像状态回调通知时间设置,默认时间为10秒(针对服务器录制和服务器合成流录制有效) | 否 | AnyChatRecordLayoutOpt 录制画面布局配置类简介: | 名称 |类型 |说明 |是否必须 | | --- | --- | --- | --- | | recordlayout| int | 视频布局,视频流数量,即多少个视频画面| 是| | layoutstyle| int | 两路流、三路流和四路流的视频画面布局风格:0-并列风格(默认) ,1-画中画风格,2-三画面并列风格| 否| | streamlist | NSArray | 录制对象AnyChatRecordStreamOpt的NSArray集合。<br>AnyChatRecordStreamOpt对象包含三个属性:<br>1、userID(String)录制对象ID<br>2、streamIndex(int):录制对象的视频流号,移动端默认为0;<br>3、recordIndex(int):录制对象在录制视频上的位置 | 否 | **回调说明** | 名称 | 参数(类型):说明 | 接口说明 | 备注 | | --- | --- | --- | --- | | RecordStartCallback | result(执行结果)<br> data(返回数据) | 录像开始回调 |result.code: 0表示成功,其他表示错误代号<br>result.msg: 结果描述;<br> data.userid: 发起录制的用户ID<br>data.status: 录像状态,值为"prepare" "start";<br>data.statuscode: 录像状态,1为prepare 2为start;<br> | | RecordStatusnotifyBlock | data(返回数据) | 录像心跳回调 (对服务器录制以及服务器合成流录制有效) |data.userid: 发起录制的用户ID<br>data.errorcode: 错误码 | **示例代码** ~~~ // 开始录制 -(void)startRecordUserId:(int)userId recordlayout:(int)recordlayout recordMode:(BRAC_RecordMode)mode { //录制配置参数 AnyChatRecordOpt *recordOpt = [[AnyChatRecordOpt alloc]init]; self.recordOpt = recordOpt; self.recordOpt.recordClipMode = BRAC_RECORD_CLIPMODE_SHRINK; self.recordOpt.content = BRAC_RECORD_DEFAULT_CONTENT; //录制内容(既录音又录像) NSMutableArray *layoutArr = [NSMutableArray array]; switch (mode) { case BRAC_RECORD_LOCAL_MODE: //本地录制(录制自己或者录制对方) { AnyChatRecordStreamOpt *streamOpt = [AnyChatRecordStreamOpt new]; streamOpt.userId = userId; //视频流编号和录制画面编号(视频流默认为0) streamOpt.streamindex = 0; streamOpt.recordindex = 0; [layoutArr addObject:streamOpt]; break; } case BRAC_RECORD_LOCAL_STREAM_MODE://本地合成录制 { //对方录制流参数 AnyChatRecordStreamOpt *iRemoteRecordStreamOpt = [[AnyChatRecordStreamOpt alloc]init]; iRemoteRecordStreamOpt.userId = userId; iRemoteRecordStreamOpt.streamindex = 0; //视频流编号(客户端同时只能开启一个摄像头 所以默认为0) iRemoteRecordStreamOpt.recordindex = 0; //录制画面编号(一个画面对应一个编号) //自己录制流参数 AnyChatRecordStreamOpt *iSelfRecordStreamOpt = [[AnyChatRecordStreamOpt alloc]init]; int myUserId = [AnyChatSDK getInstance].theMyUserID; iSelfRecordStreamOpt.userId = myUserId; iSelfRecordStreamOpt.streamindex = 0; //视频流编号(客户端同时只能开启一个摄像头 所以默认为0) iSelfRecordStreamOpt.recordindex = 1; //录制画面编号(一个画面对应一个编号) [layoutArr addObject:iRemoteRecordStreamOpt]; [layoutArr addObject:iSelfRecordStreamOpt]; break; } default: break; } self.recordOpt.recordLayoutOpt = [[AnyChatRecordLayoutOpt alloc] init]; self.recordOpt.recordLayoutOpt.streamlist = layoutArr; self.recordOpt.recordLayoutOpt.recordlayout = recordlayout; //视频布局,视频流数量,即多少个视频画面 //录制模式 self.recordOpt.mode = mode; self.recordOpt.userId = userId; //开始录制 [[AnyChatSDK getInstance] startRecord:self.recordOpt]; ~~~