类型定义
初始化配置
InitObj
- Type:object
| 成员变量 | 类型 | 说明 |
|---|---|---|
| sdkDatSavePath | string | SDK内部使用文件位置 |
| noCall | boolean | 是否使用呼叫业务(可减少登录环节、及通信需求),缺省:true |
| noQueue | boolean | 是否使用sdk的排队功能的业务(可减少登录环节、及通信需求),缺省:true |
| timeOut | int | 网络通信超时时间(10000-120000),单位是毫秒,超出范围时就近取边界值,缺省:60s |
| datEncType | string | 数据加密类型("0":敏感数据加密,"1":全面加密; 缺省:"1") |
登录配置
LoginObj
- Type:object
| 成员变量 | 类型 | 说明 |
|---|---|---|
| appId | string | appID用于区分不同的项目,每个项目都有属于自己的唯一的appID,不同appID的项目完全独立,无法相互通信。 appID请联系销售获取,并开通相关套餐和功能权限。使用appId鉴权不传token |
| appSecret | string | appID对应的密码(md5加密传给sdk),可登录SDK管理后台修改 |
| token | string | Token鉴权码,使用token登录鉴权appId和appSecret不传 |
| userId | string | 用户ID,长度不能大于128。和SDK系统无关,业务方自由填写,保证唯一性即可(同一appID下,具有唯一性即可) |
| userAuthCode | string | 只有开启第三方认证才需要填写。(开启第三方认证时,SDK服务器将连接提前配好的业务方服务器进行实时验证。) |
用户状态
UserStatus
| 成员变量 | 类型 | 说明 |
|---|---|---|
| userID | String | 用户id |
| userStatus | number | 用户的在线状态,数值参考CLIENT_STATUS |
| DNDType | boolean | 用户免打扰状态,参见setDNDStatus |
队列信息
QueueInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| queID | string | 队列ID |
| name | string | 队列名称 |
| desc | string | 队列描述 |
| prio | number | 优先级,值越小优先级越高 |
队列状态
QueueStatus
| 成员变量 | 类型 | 说明 |
|---|---|---|
| queID | string | 队列ID |
| agent_num | number | 坐席数量 |
| wait_num | number | 排队客户数量 |
| srv_num | number | 正在服务的客户数量 |
排队信息
QueuingInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| queID | string | 我排的队列 (-1:代表我没有排队;-2:代表我正在会话中,通过getSessionInfo可获取相关信息) |
| position | number | 当前位置(0为队列中的第1位,即将被服务) |
| queuingTime | number | 我排队的时长(单位s) |
会话信息
VideoSessionInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| callID | string | 会话中的呼叫ID |
| peerID | string | 会话中的目标用户ID |
| peerName | string | 会话中的目标用户昵称 |
| bCallAccepted | boolean | 呼叫是否被对方接受 |
| meetingID | number | 会话中分配的房间ID |
| duration | number | 会话持续的时长(秒) |
队列用户
UserInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| queID | string | 队列ID |
| usrID | string | 用户ID |
| name | string | 用户昵称 |
| queuingTime | number | 用户排队的时长(单位s) |
| usrExtDat | string | 用户排队时传入的扩展参数 |
设备入会配置
CRDevJoinCfg
{
devInfo: {
autoOpenMic: 0,
userID: "123456",
nickname: "xxx",
videoSize: "1280*720",
quality2Size: "228*160"
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| devInfo | string | 设备配置,json格式,详见下方devInfo参数说明 |
devInfo参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| autoOpenMic | number | 入会麦克风状态:-1:本地配置,0:入会关闭麦克风,1:入会打开麦克风(默认值) |
| userID | string | 自定义设备在房间中的UserID(可为空,默认为calledUserID或inviteeUsrID) |
| nickname | string | 自定义设备在房间中的昵称(可为空,默认为calledUserID或inviteeUsrID) |
| videoSize | string | 自定义设备视频清晰度(可选参数,未配置时采用视频透传) |
| quality2Size | string | 自定义设备视频小流清晰度(可选参数,未配置时无小流) |
操作房间属性选项
CRAttrOptions
| 参数 | 类型 | 说明 |
|---|---|---|
| notifyAll | number | 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 | number | 最后修改的时间点,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 | number | 最后修改的时间点,1970-1-1 00:00:00以来的秒数 |
房间对象数据类
MeetInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| ID | number | 房间号,数值0代表房间信息无效 |
成员信息
MemberInfo
- Type: object
| 名称 | 类型 | 说明 |
|---|---|---|
| userId | string | 用户ID |
| nickName | string | 昵称 |
| audioStatus | number | 音频状态,数值参考ASTATUS |
| videoStatus | number | 视频状态,数值参考VSTATUS |
音频配置
AudioCfg
- Type: object
| 名称 | 类型 | 说明 |
|---|---|---|
| micName | String | 麦克风设备名称(空代表系统默认设备) |
| speakerName | String | 扬声器名称(空代表系统默认设备) |
| agc | boolean | 是否开启声音增益,默认开启 |
| ans | boolean | 是否开启降噪,默认开启 |
| aec | boolean | 是否开启回声消除,默认开启 |
视频配置
VideoCfg
| 成员变量 | 类型 | 说明 |
|---|---|---|
| size | object | 视频尺寸,格式: { width: 1920, height: 1080 } |
| fps | number | 视频帧率(5~30) |
| maxbps | number | 视频码率(1~10010001000)(未配置则使用内部默认值) |
| minQuality | number | 最佳质量(18~51,越小质量越好) (未配置则使用内部默认值25) |
| maxQuality | number | 最差质量(18~51, 越大质量越差) (未配置则使用内部默认值36) |
-
注意事项
- 我们采用的是vbr编码(由质量+码率,双重控制)
- qp范围:质量参数,为的是达到目标质量后,无需花费更大码率提高质量
- maxbps码率控制,是为了确保结果一定不大于“目标码率”(体积受控), 当要超出码率控制时,自动降低质量;当质量达到目标时,自动减少码率甚至无码率输出 注:使用硬编时第二点是无效的。
视频效果配置
VideoEffects
| 成员变量 | 类型 | 说明 |
|---|---|---|
| denoise | boolean | 视频降噪 |
| upsideDown | boolean | 视频上下翻转 |
| mirror | number | 视频左右镜像(-1:自动,0:关,1:开) |
| degree | number | 视频旋转(-1:自动,0-270:旋转角度) |
前后置摄像头配置
DevicePosition
- Type: object
| 名称 | 类型 | 说明 |
|---|---|---|
| front | number | 前置摄像头ID |
| back | number | 后置摄像头ID |
视频设备私有属性
VideoAttributes
| 名称 | 类型 | 说明 |
|---|---|---|
| disabled | boolean | 是否禁用 |
| effects | VideoEffects | 视频效果配置 |
| quality1Cfg | VideoCfg | 第一档视频配置,未配置时采用全局配置 |
| quality2Cfg | VideoCfg | 第二档视频配置,未配置代表关闭对应档位视频流 |
用户摄像头
UsrVideoId
- Type: object
| 名称 | 类型 | 说明 |
|---|---|---|
| userId | string | 用户id |
| videoID | number | 设备id |
用户视频信息列表
VideoInfosObj
[
{
"isScreenCamera": false,
"userId": "Uniapp_2212",
"isDisabled": false,
"videoID": 1,
"videoName": "CAMERA_FACING_FRONT",
"isCustomCamera": false,
"isIPCamera": false,
"devID": "1_1"
},
{
"isScreenCamera": false,
"userId": "Uniapp_2212",
"isDisabled": false,
"videoID": 2,
"videoName": "CAMERA_FACING_BACK",
"isCustomCamera": false,
"isIPCamera": false,
"devID": "1_0"
}
]
- Type: object
| 名称 | 类型 | 说明 |
|---|---|---|
| userId | number | 所属用户ID |
| videoID | number | 摄像头ID |
| videoName | number | 设备名称 |
| isIPCamera | number | 是否IP摄像头 |
影音文件信息
MediaInfoObj
- Type: object
| 参数 | 类型 | 说明 |
|---|---|---|
| userID | string | 共享端用户id |
| state | number | 播放状态 0:播放 1:暂停 2:未播放 |
| mediaName | string | 影音文件名 |
屏幕共享配置对象
ScreenShareCfg
- Type: object
| 参数 | 类型 | 说明 |
|---|---|---|
| maxFps | number | 帧率, 缺省为8 (当网络发不动时,帧率会自动下降) |
| maxBps | number | 最大码率,缺省为800000(800kbps) |
屏幕共享启动配置对象
ScreenMessageCfg
- Type: object
| 参数 | 类型 | 说明 |
|---|---|---|
| title | string | 系统通知的标题 |
| contentText | string | 系统通知的内容 |
混图器规格配置
MixerCfg
- Type: object
| 成员变量 | 类型 | 说明 |
|---|---|---|
| dstResolution | object | 图像大小,例如:{ width: 1280, height: 720 } |
| frameRate | number | 图像帧率,取值范围:1-30(值越大,cpu要求更高,录像推荐15帧,直播推存25帧) |
| bitRate | number | 录制视频文件的最高码率,当图像变化小时,实际码率会低于此值 |
| defaultQP | number | 录制视频文件的缺省质量,缺省值:26 |
| gop | number | I帧周期(I帧越少码率越小,但直播延时会越大); 文件录制建议15秒一个I帧取值:fpsx15; 直播建议4秒一个I帧取值: fpsx4; |
混图器内容配置
MixerCotent
- Type: object
| 成员变量 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | number | 是 | 请见后面type描述 |
| top | number | 是 | 在混图画面中的区域(垂直位置) |
| left | number | 是 | 在混图画面中的区域(水平位置) |
| width | number | 是 | 在混图画面中的区域宽 |
| height | number | 是 | 在混图画面中的区域高 |
| userId | number | 否 | type=0时必填。用户id |
| camId | number | 否 | type=0时选填。 表示摄像头ID,默认值为"-1",表示录制默认摄像头 |
| keepAspectRatio | number | 否 | type=0时选填。内容保持原始比例,0不保持,1保持(默认值) |
| resId | string | 否 | type=1时有效。resId通过setPicResource设置 |
| text | string | 否 | type=10时必填。文字,支持时间戳参数"%timestamp%" |
| color | string | 否 | type=10时选填。文字颜色,格式:#[AA]RRGGBB, 默认#FFFFFF |
| background | string | 否 | type=10时选填。背景色,格式:#[AA]RRGGBB, 默认#0000007D |
| font-size | number | 否 | type=10时选填。字体大小,默认18 |
| text-margin | number | 否 | type=10时选填。边距,默认5 |
type描述:
当type=0时,表示混图的是摄像头,可配置userId、camId;
当type=1时,表示混图的是图片,可配置resId(仅用于本地混图);
当type=3时,表示混图的是影音共享;
当type=5时,表示混图的是共享的屏幕;
当type=6时,表示混图的是白板;
当type=10时,表示混图的是文本,可配置text、color、background、font-size、text-margin。
混图器输出配置
MixerOutPutCfg
- Type: object
| 成员变量 | 类型 | 说明 |
|---|---|---|
| type | number | 0:录像文件 1:直播流 |
| filename | string | 录像路径文件名(本地录像名格式如:/sdcard/1.mp4,服务器录像名格式如:/2018-11-21/1.mp4),支持的文件格式为mp4/ts/flv/avi,其中flv和ts两种格式在程序异常结束时产生的录制文件仍可用。 |
| encryptType | number | 录像文件是否加密,0:不加密,1:加密; |
| isUploadOnRecording | boolean | 录像文件是否边录边传,false:不上传,true:边录边传; (此参数仅本地录像有效) |
| serverPathFileName | string | 边录边传时,上传到服务器的路径文件名; (此参数仅本地录像有效) |
| liveUrl | string | 直播推流地址,支持rtmp/rtsp |
| errRetryTimes | number | 直播推流异常时,重试次数 |
录制文件
RecordFileShow
| 成员变量 | 类型 | 说明 |
|---|---|---|
| fileName | string | 文件名,全路径 |
| fileSize | number | 文件大小 |
| state | number | 文件状态, 0:未上传 1:上传中 2:已上传 3:上传失败 |
| uploadPercent | number | 录制结果中视频尺寸高度上传进度 |
录制文件、直播信息通知
MixerOutputInfo
| 成员变量 | 类型 | 说明 |
|---|---|---|
| state | number | 参见本地混图器输出状态 state为1时:duration, fileSize参数有效; state为2时:duration, fileSize参数有效; state为3时:errCode参数有效; |
| duration | number | 录像文件时长,单位:毫秒; |
| fileSize | number | 录像文件大小; |
| errCode | number | 错误码 |
云端混图器配置
CloudMixerCfgObj
- Type:object
//为房间中所有人录制独立的声音文件,独立的默认摄像头视频文件
{
"mode": 1,
"audioFileCfg": {
"svrFileNameSuffix": ".mp3",
"svrPath": "/xxx",
"subscribeAudios": ["_cr_all_"]
},
"videoFileCfg": {
"aStreamType": 1,
"svrFileNameSuffix": ".mp4",
"svrPath": "/xxx",
"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"}
}
]
}
}
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| mode | number | 录制模式,取值范围: 0-合流模式:将声音录制到一个声音文件、或将声音图像录制成一个视频文件; 1-单流模式:将涉及到的声音流、图像流存到各自独立的文件中; |
是 |
| audioFileCfg | CloudMixerAudioFileCfg | 生成音频文件配置,生成规则:进入房间并开启麦克风开始生成文件,离开房间结束生成文件 | 否 |
| videoFileCfg | CloudMixerVideoFileCfg | 生成视频文件配置,生成规则:进入房间并开启摄像头开始生成文件,离开房间结束生成文件 | 否 |
| storageConfig | CloudStorageConfig | 云存储配置,不配置时将存储在SDK服务器上 | 否 |
云端录制语音文件配置
CloudMixerAudioFileCfg
- Type:object
单流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPath | string | 服务器存储路径,默认为空 | 否 |
| svrFileNameSuffix | string | 文件名后缀,支持:“.mp3”、“.wav” 文件命名规则:昵称_房间号_开始时间.后缀 |
是 |
| subscribeAudios | array | 指定生成哪些人的音频文件; 取值:["_cr_all_"]或["userId1","userId2"]; _cr_all_代表生成所有人; |
是 |
合流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带服务器存储路径的文件名,文件格式支持“mp3”、“wav”,示例:/xxx/xxx/xxx.mp3 | 是 |
| aChannelType | number | 音频通道类型,取值范围:0-单声道,1-左右双声道,默认为0 | 否 |
| aChannelContent | array | 音频通道内容。 左右声道模式时:必须传入两个用户ID,如:["UserID1", "UserID2"],第一个人的为左声道,第二个人为右声道) 单声道模式时:必须为空 |
否 |
云端录制视频文件配置
- Type:object
CloudMixerVideoFileCfg
单流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPath | string | 服务器存储路径,默认为空 | 否 |
| svrFileNameSuffix | string | 文件名后缀,当前只支持:”.mp4” 文件命名规则:昵称_cam摄像头编号_房间号_开始时间.后缀 |
是 |
| subscribeVideos | array | 指定生成哪些人的摄像头对应的视频文件; 取值:["_cr_all_"]或["_cr_allDefCam_"]或["userId1.camId", "userId2.camId", ...]; _cr_all_代表所有人所有摄像头,_cr_allDefCam_代表生成所有人的默认摄像头 |
是 |
| aStreamType | number | 视频文件内音频内容,取值:0-自己声音,1-所有人声音,默认0 | 否 |
合流模式参数:
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| svrPathName | string | 带路径的文件名,文件格式支持:mp4、flv、ts、avi、rtmp://、rtsp://,可选一个或多个,以“;”分隔; 示例:”/xxx/xxx.mp4;rtmp://xxx1;rtmp://xxx2;” |
是 |
| aChannelType | number | 音频通道类型,取值:0-单声道,1-左右双声道,默认为0 | 否 |
| aChannelContent | array | 音频通道内容。 左右声道模式时:必须传入两个用户ID,如:["UserID1", "UserID2"],第一个人的为左声道,第二个人为右声道) 单声道模式时:必须为空 |
否 |
| vWidth | number | 视频宽度 | 是 |
| vHeight | number | 视频高度 | 是 |
| vFps | number | 视频帧率,取值0-30, 默认值12 | 否 |
| vBps | number | 视频码率,默认会根据视频尺寸生成码率 | 否 |
| vQP | number | 视频质量,取值0~51(0表示完全无损, 51表示质量非常差),推荐高质量取值18,中质量25,低质量34, 默认值19 | 否 |
| layoutConfig | array | 布局内容列表,[MixerContentObj,MixerContentObj,...] | 是 |
云端录制存储配置
CloudStorageConfig
- Type:object
| 参数 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| vendor | number | 第三方云存储平台: 1-阿里云 | 是 |
| region | string | 第三方云存储指定的地区信息 | 是 |
| bucket | string | 第三方云存储的 bucket | 是 |
| accessKey | string | 第三方云存储的 access key | 是 |
| secretKey | string | 第三方云存储的 secret key | 是 |
混图器内容配置
MixerContentObj
- Type:object
{
"type": 0,
"keepAspectRatio": 1,
"left": 5,
"top": 10,
"width": 633,
"height": 356,
"param": {
"camid": "usr1.1"
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| left | number | 在混图画面中的区域(水平位置) |
| top | number | 在混图画面中的区域(垂直位置) |
| width | number | 在混图画面中的区域宽 |
| height | number | 在混图画面中的区域高 |
| type | number | 请见后面type描述 |
| keepAspectRatio | number | 内容保持原始比例,0不保持,1保持 |
| param | object | 如:{"camid":"usr2.1"}。请见后面param支持的参数 |
type描述:
- 当type=0时,表示混图的是摄像头,param必须包含camid;
- 当type=3时,表示混图的是影音共享,不用附加任何参数;
- 当type=5时,表示混图的是共享的屏幕,不用附加任何参数;
- 当type=6时,表示混图的是白板,不用附加任何参数;
- 当type=10时,表示混图的是文本,width和height将被忽略,元素大小由文本信息自动确定。 param必须包含text,可选text-color,bk-color,font-size,text-margin;
param 支持的参数如下:
- camid:用户id.摄像头id, 如:"testuser.1"
- 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
云端混图器信息
CloudMixerInfo
- Type:object
| 参数 | 类型 | 说明 |
|---|---|---|
| ID | string | 混图器ID |
| owner | string | 创建者用户ID |
| cfg | object | 录制配置,参见CloudMixerCfgObj |
| state | number | 录制状态,参见MIXER_STATE |
云端混图器输出信息
CloudMixerOutputInfo
| 参数 | 类型 | 说明 |
|---|---|---|
| id | string | 混图器ID |
| state | number | 状态,参见CLOUDMIXER_OUTPUT_STATE state为2时:startTime, duration, fileSize参数有效; state为3时:errCode, errDesc参数有效; state为4时:progress参数有效; state为6时:errCode, errDesc参数有效; |
| svrFilePathName | string | 录像路径文件名 |
| startTime | number | 创建时间(从1970年1月1日00:00:00起的毫秒数) |
| duration | number | 录像时长(ms) |
| fileSize | number | 文件大小(Byte) |
| errCode | number | 错误码 |
| errDesc | string | 错误描述 |