数据结构体定义
CRNetworkProxy
{"type":1,"addr":"192.168.0.2","port":8080}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | int | 网络代理类型(0:无代理, 1:http代理) |
| addr | string | 代理服务器地址 |
| port | int | 代理服务器端口 |
| name | string | 可选参数,代理账号 |
| pswd | string | 可选参数,代理密码 |
CRSDKCreateParams SDK创建扩展参数
| 参数 | 类型 | 说明 |
|---|---|---|
| Timeout | int | 网络通信超时时间,单位是毫秒,取值范围:10000-120000, 缺省值:60000(60秒) |
CRLoginDat 登录数据
| 参数 | 类型 | 说明 |
|---|---|---|
| _sdkAuthType | CRVSDK_AUTHTYPE | 鉴权类型,请参见SDK登录鉴权方案 |
| _appID | CRString | _sdkAuthType为CRVSDK_AUTHTP_SECRET时为必选参数; App ID的相关说明,请参见关键词 |
| _md5_appSecret | CRString | appSecret的md5值,_sdkAuthType为CRVSDK_AUTHTP_SECRET为必选参数 |
| _token | CRString | 登录鉴权token,_sdkAuthType为CRVSDK_AUTHTP_TOKEN时为必选参数 |
| _webProtocol | CRVSDK_WEBPROTOCOL | 访问web服务协义类型 |
| _serverAddr | CRString | 服务器地址,格式为host:port。 _webProtocol不同port的取值一般也会不同,如:CRVSDK_WEBPTC_HTTP为2727, CRVSDK_WEBPTC_HTTPS/CRVSDK_WEBPTC_HTTPS_NOVERRIFY为2726 |
| _networkProxy | CRString | 网络代理, 无代理时传空 |
| _userID | CRString | 用户ID,长度不能大于128。业务方自由填写,保证同一appID下具有唯一性 |
| _userAuthCode | CRString | 默认填空。只有开启第三方认证才需要填写。(开启第三方认证时,SDK服务器将连接提前配好的业务方服务器进行实时验证。) |
CRMeetInfo 房间信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _ID | int | 房间号, 请参见关键词 |
CRDevJoinCfg 设备入会配置
{"devInfo":{"autoOpenMic":0,"userID":"123456","nickname":"xxx","videoSize":"1280*720","videoSize2":"228*160"}}
| 参数 | 类型 | 说明 |
|---|---|---|
| devInfo | object | 设备配置,详见下方devInfo参数说明 |
devInfo参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| autoOpenMic | int | 入会麦克风状态:0:入会关闭麦克风,1:入会打开麦克风(默认值) |
| userID | string | 自定义设备在房间中的UserID(可为空,默认为calledUserID或inviteeUserID) |
| nickname | string | 自定义设备在房间中的昵称(可为空,默认为calledUserID或inviteeUserID) |
| videoSize | string | 自定义设备清晰度(可选参数,格式为:"w*h",未配置时采用视频透传) |
| videoSize2 | string | 自定义设备小流清晰度(可选参数,格式为:"w*h",未配置时无小流) |
CRUserStatus 用户在线状态信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _userID | CRString | 用户ID, 请参见关键词 |
| _userStatus | CRVSDK_USER_STATUS | 客户端状态 |
| _DNDType | int | 用户自定义免打扰状态,0:未开启免打扰 |
CRQueInfo 队列信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _queID | int | 队列ID |
| _name | CRString | 队列名称 |
| _desc | CRString | 队列描述信息 |
| _prio | int | 队列优先级(为优先级最高) |
CRQueUserInfo 排队用户信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _queID | int | 队列ID |
| _usrID | CRString | 排队的用户ID |
| _name | CRString | 用户的昵称 |
| _usrExtDat | CRString | 用户排队时的扩展数据 |
| _queuingTime | int | 排队的时长(单位:秒) |
CRQueStatus 队列状态
| 参数 | 类型 | 说明 |
|---|---|---|
| _queID | int | 队列ID |
| _agentNum | int | 坐席数 |
| _waitNum | int | 等待人数 |
| _srvNum | int | 服务中人数 |
CRQueuingInfo 我的排队信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _queID | int | 排的队列ID(<0:代表我没有排队) |
| _position | int | 当前位置(0为队列中的第1位,即将被服务) |
| _queuingTime | int | 我排队的时长(单位:秒) |
CRTransReqInfo 文件传输请求信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _filePathName | CRString | 本地路径文件名 |
| _dstUrl | CRString | 目标URL |
| _bUploadType | bool | 传输类型(上传:true、下载:false) |
| _extParams | CRString | 扩展信息,如:http头部扩展,json格式,{"header1":"value1", "header2":"value2"} |
| _transferCfg | CRString | 传输控制参数,josn格式,例如{"decodeCREEFile":0} 详细如下: (1)decodeCREEFile:此参数仅http上传有效。0:上传原始文件,1:上传解密的文件(SDK录制加密文件) (2)extParamsTransfType:此参数仅http上传有效。当取值缺省或为0时:extParams在header中传送。取值为1时:extParams在multipart/form-data中传送 |
CRFileTransInfo 文件传输状态信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _filePathName | CRString | 本地路径文件名 |
| _dstUrl | CRString | 目标URL |
| _bUploadType | bool | 传输类型(上传:true、下载:false) |
| _extParams | CRString | 参见CRTransReqInfo对应描述 |
| _transferCfg | CRString | 参见CRTransReqInfo对应描述 |
| _state | CRVSDK_FILETRANSFER_STATE | 传输状态 |
| _fileSize | int64_t | 文件大小 |
| _finishedSize | int64_t | 已传输大小 |
CRMeetingMember 房间成员信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _userId | CRString | 用户ID |
| _nickName | CRString | 姓名 |
| _audioStatus | CRVSDK_ASTATUS | 音频状态 |
| _videoStatus | CRVSDK_VSTATUS | 视频状态 |
CRAudioDevInfo 音频设备信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _id | CRString | 设备id |
| _name | CRString | 设备名称 |
CRVideoDevInfo 视频设备信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _videoID | int | 设备编号(程序重启后可能变化) |
| _devName | CRString | 设备名称 |
| _devMaxSz | CRSize | 视频设备支持的最大分辨率 |
| _devGuid | CRString | 设备guid, 仅获取本地设备有效 |
| _bDisabled | bool | 设备是否被禁用, 仅获取本地设备有效 |
| _devType | CRVSDK_VDEV_TYPE | 设备类型 |
CRUserVideoID 用户视频ID
| 参数 | 类型 | 说明 |
|---|---|---|
| _userID | CRString | 用户id |
| _videoID | int | 设备id, -1可代表用户默认视频设备 |
CRAudioCfg 音频配置
| 参数 | 类型 | 说明 |
|---|---|---|
| _micID | CRString | 麦克风设备(空代表系统默认设备) |
| _spkID | CRString | 扬声器设备(空代表系统默认设备) |
| _agc | bool | 是否启用声音增益 |
| _ans | bool | 是否启用降噪 |
| _aec | bool | 是否启用回声消除 |
CRVideoCfg 视频配置
| 参数 | 类型 | 说明 |
|---|---|---|
| size | string | 分辨率:"w*h" |
| fps | int | 帧率(1~60) |
| maxbps | int | 可选参数(默认值),码率 单位:bit/秒,如100kbps填值:100000,1mbps填值1000000 |
| min_qp | int | 可选参数(默认值22),自动调整时最佳画质(18~51, 越小质量越好) |
| max_qp | int | 可选参数(默认值32),自动调整时最低画质(18~51, 越小质量越好) |
maxbps 与 qp 之间的关系说明:
- SDK默认使用min_qp(最佳qp)编码视频;
- 当SDK检测到视频流发不动时,会逐步降低qp值直到max_qp(最差qp),以便减少带宽需求提升流畅度;
- 当SDK检测到网络变好时,会逐步恢复qp值直到min_qp(最佳qp);
- maxbps为视频流的最大码率,当qp值与maxbps冲突时(以当前qp编码的码率将突破maxbps),以maxbps为准;
CRAudioFrame 音频帧数据
| 参数 | 类型 | 说明 |
|---|---|---|
| _format | CRVSDK_AUDIO_FORMAT | 音频格式 |
| _sampleRate | int | 采样率 |
| _channel | CRVSDK_AUDIO_CHLAYOUT | 声道布局 |
| _timestamp | int64_t | 时间戳(ms) |
| _data | CRByteArray | 音频数据 |
CRVideoFrame 图像帧数据
| 接口 | 描述 |
|---|---|
| CRVideoFrame() | 构造空的图像帧 |
| CRVideoFrame(const CRVideoFrame& s) | 拷贝构造图像帧,内部视频数据共享 |
| CRVideoFrame& operator=(const CRVideoFrame& s) | 图像帧赋值,内部图像数据共享 |
| void clear() | 清空本对象数据(内部共享计数减1,最后一个clear将释放帧内存) |
| void initData(CRVSDK_VIDEO_FORMAT fmt, int w, int h, int64_t pts = 0, CRVSDK_COLORSPACE colspc = CRVSDK_COLSPC_UNSPECIFIED, CRVSDK_COLORRANGE colrg = CRVSDK_COLRG_UNSPECIFIED) | 为帧分配内存空间,可通过getRawDatPtr得到对应内存指针,再进行写入操作 |
| void initData(CRVSDK_VIDEO_FORMAT fmt, int w, int h, const uint8_t *srcDat, int datLen, int64_t pts = 0, CRVSDK_COLORSPACE colspc = CRVSDK_COLSPC_UNSPECIFIED, CRVSDK_COLORRANGE colrg = CRVSDK_COLRG_UNSPECIFIED) | 设置帧数据,内部将分配内存,并copy srcBuf的内容 |
| CRVSDK_VIDEO_FORMAT getFormat() const | 获取帧图像格式 |
| int getWidth() const | 获取帧图像宽 |
| int getHeight() const | 获取帧图像高 |
| int64_t getPts() const | 获取帧图像时戳 |
| int getDatSize() const | 获取图像数据大小 |
| int copyDatToBuf(unsigned char *pBuf, int bufLen) const | copy图像数据到目标内存,涉及数据copy效率较低 |
| void getRawDatPtr(uint8_t **ptr, int *lineSize, int planeCount) const; | 获取内部共享的数据指针,不涉及数据copy效率高 |
| bool isHwFrame() const; | 判断是否为硬件帧 |
| CRVSDK_COLORSPACE getColSpace() const; | 获取图像颜色空间 |
| CRVSDK_COLORRANGE getColRange() const; | 获取图像颜色范围 |
getRawDatPtr使用举例:
获取rgb格式如下:
uint8_t* pRGBDat[1];
int linesize[1];
getRawDatPtr(&pRGBDat, &linesize, 1);
获取yuv420p格式如下:
uint8_t* yuv[3];
int linesize[3];
getRawDatPtr(yuv, linesize, 3);
CREncPacket 编码数据
| 接口 | 描述 |
|---|---|
| CREncPacket() | 构造 |
| CREncPacket(const CREncPacket& s) | 拷贝构造,内部数据共享 |
| CREncPacket& operator=(const CREncPacket& s) | 赋值,内部数据共享 |
| void clear() | 清空本对象数据(内部共享计数减1,最后一个clear将释放内存) |
| void initData(const uint8_t *srcDat, int datLen, bool bIFrame = false, int64_t pts = CRVSDK_NOPTS_VALUE, int64_t dts = CRVSDK_NOPTS_VALUE) | 初始化数据,内部将分配内存,并copy srcBuf的内容 |
| bool isIFrame() const | 是否为 I 帧 |
| const uint8_t* getBuffer() const | 获取编码数据 |
| int getLength() const | 获取数据长度 |
| int64_t getPts() const | 显示时戳 |
| int64_t getDts() const | 解码时戳 |
CRScreenCaptureSourceInfo 屏幕共享采集源信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _type | CRVSDK_SCREENCAPTURESOURCE_TYPE | 类型 |
| _sourceId | int64_t | 采集源ID,对于窗口,表示窗口 ID(Window ID);对于屏幕,表示屏幕 ID(Display ID) |
| _sourceTitle | CRString | 采集源标题,适用窗口类型 |
| _sourceName | CRString | 采集源类名称,可辅助做一些窗口的识别处理 |
| _thumbImage | CRVideoFrame | 采集源缩略图 |
| _iconImage | CRVideoFrame | 采集源图标,适用窗口类型 |
| _primaryMonitor | bool | 是否为主屏,适用屏幕类型 |
| _minimizeWindow | bool | 窗口是否已最小化,适用Windows平台 |
CRScreenShareCfg 屏幕共享配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
| monitorID | int64_t | 可选参数,屏幕ID,如果要指定具体屏幕,可以传入从getScreenCaptureSources中获取的_sourceId |
| catchWnd | int64_t | 可选参数, 共享指定的窗口ID,可以传入从getScreenCaptureSources中获取的_sourceId |
| catchRect | object | 可选参数, 共享区域,如:{"left":0, "top":0, "width":640, "height":360} |
| encSize | object | 可选参数, 不配置时以抓图的实际尺寸编码(这种图像质量最高);如果配置,将等比缩放+填充变成目标尺寸再编码,用于某些场影限定或保持分辨率用,格式:{"width":640, "height":360} |
| maxFPS | int | 可选参数(默认值12),最大帧率(1~60) |
| maxKbps | int | 可选参数(默认值2000),最大码率(1~4000) 单位:kbit/秒,如100kbps填值:100,1mbps填值1000 |
| qp | int | 可选参数(默认值22),画质(0~51,0为无损) |
| shareSound | bool | 可选参数(默认值false),共享电脑声音, 仅适用Windows平台 |
| excludeSharerPID | bool | 可选参数(默认值false),不共享本进程, 仅适用Windows平台 |
| activateWindow | bool | 可选参数(默认值false),共享开启时是否将共享窗口激活到前台,适用窗口共享 |
| borderHighLight | bool | 可选参数(默认值false),是否将共享源描边高亮,仅在窗口共享时有效,适用Windows和macOS平台 |
| highLightColor | string | 可选参数(默认值#54DB00),共享时描边颜色, 仅在窗口共享时有效,支持格式:"#RGB","#RRGGBB", "#AARRGGBB",适用Windows和macOS平台 |
| highLightColorForPause | string | 可选参数(默认值 #FFC268),暂停共享时描边颜色, 仅在窗口共享时有效,支持格式:"#RGB","#RRGGBB", "#AARRGGBB",适用Windows和macOS平台 |
| highLightWidth | int | 可选参数(默认值5),描边宽度,仅在窗口共享时有效,适用Windows和macOS平台 |
屏幕共享场景:传入正确的monitorID, 不传catchWnd、catchRect;
窗口共享场景:传入正确的catchWnd, 不传monitorID、catchRect;
区域共享场景:传入正确的catchRect, 不传monitorID、catchWnd;
monitorID、catchWnd、catchRect传入多值时,将共享交集内容;
CRScreenShareInfo 屏幕共享状态信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _state | int | 共享状态, 0:未共享,1:共享中 |
| _sharerUserID | CRString | 共享者用户ID |
| _ctrlerUserID | CRString | 当前远程控制者用户ID |
CRMediaInfo 影音共享状态信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _state | CRVSDK_MEDIA_STATE | 共享状态 |
| _userID | CRString | 共享者用户ID |
| _mediaName | CRString | 共享的文件名 |
CRVStreamInfo 图像流信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _w | short | 图像宽 |
| _h | short | 图像高 |
| _fps | float | 帧率 |
| _bps | int | 码率,单位:bit/秒 |
| _codecID | CRVSDK_CODEC_ID | 编码类型 |
CRNetStateInfo 网络状态信息
| 参数 | 类型 | 说明 |
|---|---|---|
| _lv | int | 网络评价0~10(10分为最佳) |
| _delay | int | 网络延时,单位ms |
| _aSndLost | int | 语音发送丢包率 |
| _aRcvLost | int | 语音接收丢包率 |
| _vSndLost | int | 视频发送丢包率 |
| _vRcvLost | int | 视频接收丢包率 |
CRCanvas SDK内部渲染对象
| 接口 | 描述 |
|---|---|
| CRCanvas(CRVSDK_STREAM_VIEWTYPE viewType, void *view) | 构造函数 viewType:视图类型 view:windows为窗口句柄 |
| CRVSDK_STREAM_VIEWTYPE getViewType() | 获取视图类型, 线程安全 |
| void setScalingMode(CRVSDK_SCALE_MODE mode) | 设置缩放模式, 线程安全 |
| CRVideoFrame getVideoFrame() | 获取当前显示的帧信息,线程安全 |
| void setVideoID(const CRUserVideoID &id, CRVSDK_VSTEAMLV_TYPE lv = CRVSDK_VSTP_LV0) | 设置视频源, 线程安全 仅viewType为CRVSDK_VIEWTP_VIDEO才能设置 所有端默认有标准流CRVSDK_VSTP_LV0可以被观看,如果要观看对方小流,必须对方开启才能观看,参见setLocVideoAttributes |
| void clearVideoFrame() | 清理显示的图像帧(如: 关闭视频后,不想显示最后一帧图像) |
CRCustomRenderHandler 自渲染对象
| 接口 | 描述 |
|---|---|
| CRCustomRenderHandler(CRVSDK_STREAM_VIEWTYPE viewType, void *view) | 构造函数 viewType:视图类型 |
| CRVSDK_STREAM_VIEWTYPE getViewType() | 获取视图类型, 线程安全 |
| void setVideoID(const CRUserVideoID &id, CRVSDK_VSTEAMLV_TYPE lv = CRVSDK_VSTP_LV0) | 设置视频源, 线程安全 仅viewType为CRVSDK_VIEWTP_VIDEO才能设置 所有端默认有标准流CRVSDK_VSTP_LV0可以被观看,如果要观看对方小流,必须对方开启才能观看,参见setLocVideoAttributes |
| virtual void onRenderFrameDat(const CRVideoFrame &frm) = 0 | 通知新的图像帧,纯虚函数; 在子线程回调,需要注意线程安全; |
CRVideoAttributesObj 视频设备私有属性
//只开大流,清晰度为720p
{ "size":"1280*720", "fps":15, "maxbps":1000000 }
//开启大小流,大流720p, 小流160p
{ "size":"1280*720", "fps":15, "maxbps":1000000, "quality2":{"size":"228*160", "maxbps":120000} }
| 参数 | 类型 | 说明 |
|---|---|---|
| disabled | int | 可选参数,取值0:不禁用此设备(默认值),1:禁用此设备; |
| effects | CRVideoEffectsObj | 可选参数,视频效果配置,未配置时采用全局配置setVideoEffects |
| fps | int | 可选参数,参见CRVideoCfg的描述,未配置时采用全局配置setVideoCfg |
| size | string | 可选参数,参见CRVideoCfg的描述,未配置时采用全局配置setVideoCfg |
| maxbps | int | 可选参数,参见CRVideoCfg的描述,未配置时内部依据Size使用对应的默认值 |
| qp_min | int | 可选参数,参见CRVideoCfg的描述,未配置时采用全局配置setVideoCfg |
| qp_max | int | 可选参数,参见CRVideoCfg的描述,未配置时采用全局配置setVideoCfg |
| quality2 | object | 可选参数,第二档质量配置,支持的属性有:size, maxbps, qp_min, qp_max; quality2未配置或配为空,代表关闭第二流; 配置quality2,代表开启第二流,将带来较大的cpu开销; 通过CRCanvas.setVideoID或CRCustomRenderHandler.setVideoID可以选择观看的标准流或第二流; |
CRVideoEffectsObj 视频效果参数
{"denoise":1,"mirror":1}
| 参数 | 类型 | 说明 |
|---|---|---|
| denoise | int | 图像降噪,有较大cpu开销, 取值:0/1;移动平台默认为0,pc平台默值为1; |
| mirror | int | 图像镜像(左右翻转),取值:0/1, 默认为0。如果只想本地镜像,可在图像绘制前调用mirrorVideoFrame对图像进行镜像处理 |
| upsideDown | int | 图像上下翻转,取值:0/1, 默认为0 |
| deinterlace | int | 图像反交错,取值:0/1, 默认为0 (除非图像采集设备为隔行扫描设备,否则不要开启) |
| degree | int | 旋转角度,<0代表自动,旋转取值:0、90、180、270、360, 默认为自动模式 |
CRLocMixerCfgObj 本地混图器规格配置
{"width":640,"height":360,"frameRate":8,"bitRate":500000,"defaultQP":28,"gop":120}
| 参数 | 类型 | 说明 |
|---|---|---|
| width | int | 图像宽度(要求16的倍数) |
| height | int | 图像高度(要求8的倍数) |
| frameRate | int | 图像帧率,取值范围:1-30(值越大,cpu要求更高,录像推荐15帧,直播推存25帧) |
| bitRate | int | 最高码率(例如1m:1000000),当图像变化小时,平均码率会低于此值 |
| defaultQP | int | 目标质量,缺省值:25。取值范围:0~51,0表示完全无损, 51表示质量非常差,推荐高质量取值18,中质量25, 低质量34 |
| gop | int | I帧周期(I帧周期越大平均码率越小,但直播延时会越大); 文件录制建议15秒一个I帧,取值:15xframeRate(frameRate的15倍); 直播建议2~4秒一个I帧,取值: 4xframeRate(frameRate的4倍); |
CRMixerContentObj 混图器内容
{"type":0,"keepAspectRatio":1,"left":5,"top":10, "width":633,"height":356,"param":{"camid":"usr1.1"}}
| 参数 | 类型 | 说明 |
|---|---|---|
| left | int | 在混图画面中的区域(水平位置) |
| top | int | 在混图画面中的区域(垂直位置) |
| width | int | 在混图画面中的区域宽 |
| height | int | 在混图画面中的区域高 |
| type | int | CRVSDK_MIXER_CONTENT_TYPE,请见后面type描述; |
| keepAspectRatio | int | 内容保持原始比例,0不保持,1保持, 默认值为:1 |
| param | obj | 如:{"camid":"usrxxx.1"}。请见后面param支持的参数; |
type描述:
- 当type=CRVSDK_MIXCONT_VIDEO时,表示混图的是视频,param必须包含camid;
- 当type=CRVSDK_MIXCONT_PIC时,表示混图的是指定的图片,param必须包含resourceid;(仅用于本地混图)
- 当type=CRVSDK_MIXCONT_SCREEN时,表示混图的是本地屏幕,param可以增加附加参数screenid/pid/area/window;(仅用于本地混图)
- 当type=CRVSDK_MIXCONT_MEDIA时,表示混图的是影音共享,不用附加任何参数;
- 当type=CRVSDK_MIXCONT_SCREEN_SHARED时,表示混图的是共享的屏幕,不用附加任何参数;
- 当type=CRVSDK_MIXCONT_WBOARD时,表示混图的是白板,不用附加任何参数;(仅用于云端混图,本地混图应该生成图像用MIXVTP_PIC)
- 当type=CRVSDK_MIXCONT_TEXT时,表示混图的是文本,width和height将被忽略,元素大小由文本信息自动确定。 param必须包含text,可选text-color,bk-color,font-size,text-margin;
param 支持的参数如下:
- camid:用户id.视频设备id, 如:"testuser.1"。 视频设备id可以为-1,代表此用户的默认视频设备
- resourceid:具有唯一属性的字符串id,通过setPicResource将图片存储到SDK内供混图模块使用
- screenid:屏幕序号,-1表示主屏
- pid:进程号
- area:抓屏区域:"x,y,w,h"
- text:文本内容,支持时间戳参数"%timestamp%",格式为:YYYY-MM-DD HH:MM:SS
- text-color:文本颜色,支持格式:"#RGB","#RRGGBB", "#AARRGGBB", 默认"#FFFFFF"
- bk-color:背景色,支持格式:"#RGB","#RRGGBB", "#AARRGGBB", 默认"#7D000000"
- font-size:字体大小,默认18
- text-margin:边距,默认5
CRLocMixerOutputObj 本地混图器输出配置
输出到文件配置:{"type":0,"filename":"D:/1.mp4"}
直播推流配置:{"type":1,"liveUrl":"rtmp://xxx"}
当输出到文件时,参数如下:
| 参数 | 类型 | 说明 |
|---|---|---|
| type | int | 取值应为:CRVSDK_MIXER_OUTPUT_FILE |
| filename | string | 录像路径文件名(如:d:/1.mp4),支持的文件格式为mp4/ts/flv/avi,其中flv和ts两种格式在程序异常结束时产生的录制文件仍可用。 |
| encryptType | int | 可选参数,录像文件是否加密,0:不加密(默认值),1:加密; |
当输出推流时,参数如下:
| 参数 | 类型 | 说明 |
|---|---|---|
| type | int | 取值应为:直播推流CRVSDK_MIXER_OUTPUT_LIVE |
| liveUrl | string | 直播推流地址, 支持rtmp/rtsp协议;如:rtmp://ip:port/xxx/yyy |
| errRetryTimes | int | 可选参数,直播推流异常时,重试次数,默认值0 |
CRLocMixerOutputInfoObj 本地混图器输出信息
{ "state":2, "duration":100,"fileSize":10000 }
| 参数 | 类型 | 说明 |
|---|---|---|
| state | int | 状态,参见CRVSDK_LOCMIXER_OUTPUT_STATE state为CRVSDK_LOCMO_RUNNING时:duration, fileSize参数有效; state为CRVSDK_LOCMO_STOPPED时:duration, fileSize参数有效; state为CRVSDK_LOCMO_FAIL时:errCode参数有效; |
| duration | int | 录像文件时长,单位:毫秒 |
| fileSize | int | 录像文件大小,单位:字节 |
| errCode | CRVSDK_ERR_DEF | 错误码 |
CRCloudMixerCfgObj 云端混图器配置
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| mode | int | 混图模式,取值范围: 0-合流模式:将声音/图像混合到一个文件或直播流中; 1-单流模式:将涉及到的声音流、图像流存到各自独立的文件中; |
是 |
| audioFileCfg | CRCloudMixerAudioFileCfg | 生成音频文件配置,生成规则:进入房间并开启麦克风开始生成文件,离开房间结束生成文件 | 否 |
| videoFileCfg | CRCloudMixerVideoFileCfg | 生成视频文件配置,生成规则:进入房间并开启视频开始生成文件,离开房间结束生成文件 | 否 |
| storageConfig | CRCloudStorageConfig | 云存储配置,不配置时将存储在SDK服务器上 | 否 |
为房间中所有人录制独立的声音文件,独立的默认视频流文件
{
"mode": 1,
"audioFileCfg": {
"svrPathName": "/2021-09-24/会议号/$UID$_$TIME$.mp3",
"subscribeAudios": ["_cr_all_"]
},
"videoFileCfg": {
"aStreamType": 1,
"svrPathName": "/2021-09-24/会议号/$UID$_cam$CAMID$_$TIME$.mp4",
"subscribeVideos": ["_cr_allDefCam_"]
}
}
录制一个2分屏左右布局图像+房间声音的mp4文件
{
"mode": 0,
"videoFileCfg": {
"svrPathName": "/2021-09-24/2021-09-24_13-47-41_Win32_73542046.mp4",
"vWidth": 1280,
"vHeight": 720,
"vFps": 15,
"layoutConfig": [
{
"type": 0,
"top": 180,
"left": 0,
"width": 640,
"height": 360,
"keepAspectRatio": 1,
"param": {"camid": "1.-1"}
},
{
"type": 0,
"top": 180,
"left": 640,
"width": 640,
"height": 360,
"keepAspectRatio": 1,
"param": {"camid": "2.-1"}
}
]
}
}
CRCloudMixerAudioFileCfg 云端录制语音文件配置
1. 单流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带路径的文件名,文件格式支持“mp3”、“wav”; 文件名支持变量(路径不支持): $UID$:用户ID $UNAME$:用户昵称 $DATE$:日期,格式为YYYYMMDD $TIME$:时间,格式为hhmmss 示例:/2025-03-24/业务单号/$UID$_$TIME$.mp3 |
是 |
| subscribeAudios | array<string> | 指定生成哪些人的音频文件; 取值:["_cr_all_"]或["userId1","userId2"]; _cr_all_代表生成所有人; |
是 |
2. 合流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带路径的文件名,文件格式支持“mp3”、“wav”,示例:/xxx/xxx/xxx.mp3 | 是 |
| aChannelType | int | 音频通道类型,取值范围:0-单声道,1-左右双声道,默认为0 | 否 |
| aChannelContent | array<string> | 音频通道内容。 左右声道模式时:必须传入两个用户ID,如:["UserID1", "UserID2"],第一个人的为左声道,第二个人为右声道) 单声道模式时:必须为空 |
否 |
CRCloudMixerVideoFileCfg 云端录制视频文件配置
1. 单流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带路径的文件名,格式支持:mp4、flv、ts、avi; 文件名支持变量(路径不支持): $UID$:用户ID $UNAME$:用户昵称 $CAMID$:视频设备编号 $DATE$:日期,格式为YYYYMMDD $TIME$:时间,格式为hhmmss 示例:”/2025-03-24/会议号/$UID$_cam$CAMID$_$TIME$.mp4” |
否 |
| subscribeVideos | array<string> | 指定生成哪些人的视频设备对应的视频文件; 取值:["_cr_all_"]或["_cr_allDefCam_"]或["userId1.camId", "userId2.camId", ...]; _cr_all_代表所有人所有视频设备,_cr_allDefCam_代表生成所有人的默认视频设备 |
否 |
| aStreamType | int | 视频文件内音频内容,取值:0-自己声音,1-所有人声音,默认0 | 否 |
| pushCfg | array<CRStreamPushCfg> | 流的推流配置 | 否 |
CRStreamPushCfg结构说明:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| streamID | string | 流id,格式为: "UserId.camId" | 是 |
| urls | array<string> | 推流url列表,支持推流协议: rtmp://, rtsp:// | 是 |
说明:
录制时:svrPathName、subscribeVideos必传,aStreamType可选;
推流时:pushCfg必传,aStreamType可选;
2. 合流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带路径的文件名,文件格式支持:mp4、flv、ts、avi、rtmp://、rtsp://,可选一个或多个,以“;”分隔; 示例:”/xxx/xxx.mp4;rtmp://xxx1;rtmp://xxx2;” |
是 |
| aChannelType | int | 音频通道类型,取值:0-单声道,1-左右双声道,默认为0 | 否 |
| aChannelContent | array<string> | 音频通道内容。 左右声道模式时:必须传入两个用户ID,如:["UserID1", "UserID2"],第一个人的为左声道,第二个人为右声道) 单声道模式时:必须为空 |
否 |
| vWidth | int | 视频宽度 | 是 |
| vHeight | int | 视频高度 | 是 |
| vFps | int | 视频帧率,取值0-30, 默认值12 | 否 |
| vBps | int | 视频码率,单位bit/秒(如100kbps, 此处填值100000),默认会根据视频尺寸生成码率, 取值参见视频流默认码率定义 | 否 |
| vQP | int | 视频质量,取值0~51(0表示完全无损, 51表示质量非常差),推荐高质量取值18,中质量25,低质量34, 默认值19; 它与vBps共同影响最终文件大小和图像质量,逻辑关系为: 1. 当码率要超出vBps时,质量将自动被降低,保持码率不超过vBps; 2. 当图像质量达到vQP后,码率将自动降低,节省空间; |
否 |
| layoutConfig | array<CRMixerContentObj> | 布局内容列表,参见CRMixerContentObj | 是 |
CRCloudStorageConfig 云端录制存储配置
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| vendor | int | 第三方云存储平台: 1-阿里云 | 是 |
| region | string | 第三方云存储指定的地区信息 | 是 |
| bucket | string | 第三方云存储的 bucket | 是 |
| accessKey | string | 第三方云存储的 access key | 是 |
| secretKey | string | 第三方云存储的 secret key | 是 |
| endPoint | string | 第三方云存储的完整路径,当设置该参数后,region参数不生效 | 否 |
CRCloudMixerInfoList 云端混图器信息列表
list<CRCloudMixerInfo>
CRCloudMixerInfo 云端混图器信息
| 参数 | 类型 | 说明 |
|---|---|---|
| ID | string | 混图器ID |
| owner | string | 创建者用户ID |
| cfg | string | 录制配置,json格式串,参见CRCloudMixerCfgObj |
| state | int | 录制状态,参见CRVSDK_MIXER_STATE |
CRCloudRecordFileInfo 云端录制文件信息
| 参数 | 类型 | 说明 |
|---|---|---|
| state | int | 上传状态,5:上传成功,6:上传失败 |
| outputName | string | 文件名 |
| duration | int64 | 文件时长 |
| size | int64 | 文件大小 |
CRCloudMixerEventInfoObj 云端混图器事件信息
| 参数 | 类型 | 说明 |
|---|---|---|
| eventDesc | string | 事件描述 |
| outputName | string | 文件名/推流地址 |
| startTime | int64 | 创建时间(从1970年1月1日00:00:00起的毫秒数) |
| duration | int64 | 录像时长(ms) |
| size | int64 | 文件大小(Byte) |
| errCode | CRVSDK_ERR_DEF | 错误码 |
| errDesc | string | 错误描述 |
| progress | float | 上传进度(0~100.0) |
| streamID | string | 视频设备id |
| allFileState | int | 录制文件上传整体状态, 0:全部未上传,1:全部上传成功,2:部分上传成功 |
| allFileInfo | array<CRCloudRecordFileInfo> | 录制文件上传信息列表 |
CRMeetingAttrOptions 操作房间属性选项
| 参数 | 类型 | 说明 |
|---|---|---|
| notifyAll | int | 0(默认值):不通知,1:通知房间所有人员 |
CRAttrObjs 房间属性集
{
"KeyXX": {
"value": "11111",
"lastModifyUserID": "111",
"lastModifyTs": 11111
},
"KeyYY": {
"value": "22222",
"lastModifyUserID": "222",
"lastModifyTs": 22222
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| User defined Key | string | 自定义的属性Key |
| value | string | 属性值 |
| lastModifyUserID | string | 最后修改的用户ID |
| lastModifyTs | int | 最后修改的时间点,1970-1-1 00:00:00以来的秒数 |
CRUsrAttrObjs 用户属性集
{
"userid1": {
"KeyXX": {
"value": "11111",
"lastModifyUserID": "111",
"lastModifyTs": 11111
},
"KeyYY": {
"value": "22222",
"lastModifyUserID": "222",
"lastModifyTs": 22222
}
},
"userid2": {
"KeyXX": {
"value": "11111",
"lastModifyUserID": "111",
"lastModifyTs": 11111
},
"KeyYY": {
"value": "22222",
"lastModifyUserID": "222",
"lastModifyTs": 22222
}
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| UserID | string | 用户ID |
| User defined Key | string | 自定义的属性Key |
| value | string | 属性值 |
| lastModifyUserID | string | 最后修改的用户ID |
| lastModifyTs | int | 最后修改的时间点,1970-1-1 00:00:00以来的秒数 |
CRScreenMarkData 屏幕共享标注数据
| 参数 | 类型 | 说明 |
|---|---|---|
| markid | string | 标注ID,唯一标识一个标注 |
| userid | string | 标注所属用户ID |
| penType | int | 画笔类型,1:铅笔, 2:水笔。默认:1 |
| penWidth | int | 画笔宽度,默认:2 |
| color | string | 颜色,支持格式:"#RGB","#RRGGBB", "#AARRGGBB" |
| points | array | 点数据,每个点是uint32类型,其中高16位是x,低16位是y |
CRCustomEncParams 创建自定义编码器参数
| 参数 | 类型 | 说明 |
|---|---|---|
| _id | string | 标注,便于与SDK日志对应分析 |
| _w | int | 编码器宽 |
| _h | int | 编码器高 |
| _bps | int | 最大码率,单位:bit/秒 |
| _fps | int | 帧率 |
| _qp | int | 质量 |
| _intervalMSec | int | I帧周期(ms) |
| _opts | string | 扩展参数,jsont格式,支持profile, tune |
CRCustomDecParams 创建自定义解码器参数
| 参数 | 类型 | 说明 |
|---|---|---|
| _id | string | 标注,便于与SDK日志对应分析 |
| _opts | string | 扩展参数,jsont格式,暂无参数支持 |
CRCustomEncRslt 自定义编解码结果
| 参数 | 类型 | 说明 |
|---|---|---|
| _pkt | CREncPacket | 编码结果数据 |
| _outQP | int | 编码帧结果质量(未知填0) |
CRSize 尺寸
| 参数 | 类型 | 说明 |
|---|---|---|
| cx | int | 宽度 |
| cy | int | 高度 |
CRBeautyCfg 美颜配置
| 参数 | 类型 | 说明 |
|---|---|---|
| filters | list<CRBeautyFilter> | 滤镜列表, 不在列表中的滤镜按不启用处理 |
CRBeautyFilter 美颜滤镜配置
| 参数 | 类型 | 说明 |
|---|---|---|
| type | CRVSDK_BEAUTYFILTER_TYPE | 滤镜类型 |
| level | float | 滤镜强度,取值0~1.0。0代表不启用,1代表最高强度 |
CRVirtualBkCfg 虚拟背景配置
{"type":1, "colorKey":"0,255,0", "bkImgFile":"d:\\imgs\\1.jpg"}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | int | 请参见CRVSDK_VIRTUALBK_TYPE |
| colorKey | string | 可选参数,CRVSDK_VBKTP_COLOR(绿幕模式)时,绿幕的颜色值,格式支持:"r,g,b", "#RGB","#RRGGBB","#AARRGGBB"。如:"0,255,0"(与颜色值相近的区域将替换为背景图) |
| bkImgFile | string | 可选参数,背景全路径文件名。(当前支持jpg、png、bmp格式) |
| bkImgFromResID | string | 可选参数,背景资源ID。通过setPicResource将图像存储到SDK内 |
| bkImgFromCamID | string | 可选参数,用做背景的视频设备id。格式为: userid.camId |
| bkImgArea | object | 可选参数,默认为背景等比中间区域。可以指定背景区域:left, top, width, height,可实现不同人占不同座位等需求 |
- 补充说明:
- bkImgFile, bkImgFromResID, bkImgFromCamID 三个必须传一个,传多个时按顺序启用前者。