音视频通话

数据结构体定义

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.setVideoIDCRCustomRenderHandler.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,可实现不同人占不同座位等需求
  • 补充说明:
  1. bkImgFile, bkImgFromResID, bkImgFromCamID 三个必须传一个,传多个时按顺序启用前者。