接口概述
接口说明
初始化
MoSDK.init(Application app, @NonNull MoConfig config, MoRspListener listener)
参数 | 说明 |
---|---|
app | application对象 |
config | SDK配置。详见MoConfig |
listener | 初始化回调。详见MoRspListener |
成功回调Void
失败回调error
登录
普通登录接口
MoSDK.login(boolean isMoPlat, @NonNull String server, int port, @NonNull String account, @NonNull String passwd, MoRspListener listener)
参数 | 说明 |
---|---|
isMoPlat | true:摩云平台 false:科达通用平台 |
server | 服务器地址 |
port | 端口 |
account | 账号 |
passwd | 密码 |
listener | 登录回调。详见MoRspListener |
成功回调LoginRtcResult
失败回调error
鉴权登录接口
MoSDK.loginEx(String server, String userId, String token, MoRspListener listener)
参数 | 说明 |
---|---|
server | 服务器地址。如果是用户自有平台必须与摩云平台进行账号绑定 |
userId | 用户唯一id |
token | 认证授权token |
listener | 登录回调。详见MoRspListener |
成功回调LoginRtcResult
失败回调error
退出登录
MoSDK.logout(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 退出登录回调。详见MoRspListener |
成功回调Void
失败回调error
创建会议
MoSDK.createConf(@NonNull CreateConfParam param, MoRspListener listener)
参数 | 说明 |
---|---|
param | 创会参数。详见CreateConfParam |
listener | 创会回调。详见MoRspListener |
成功回调CreateConfResult
失败回调error
加入会议
MoSDK.joinConf(String confId, MoRspListener listener)
参数 | 说明 |
---|---|
confId | 会议号 |
listener | 入会回调。详见MoRspListener |
成功回调JoinConfResult
失败回调error
接听呼叫
MoSDK.acceptCall(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 接听回调。详见MoRspListener |
成功回调Void
失败回调error
挂断呼叫
MoSDK.rejectCall(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 挂断回调。详见MoRspListener |
成功回调Void
失败回调error
离开会议
MoSDK.quitConf(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 离会回调。详见MoRspListener |
成功回调Void
失败回调error
结束会议
MoSDK.endConf(MoRspListener listener)
注:需要会议管理员(主席)权限
参数 | 说明 |
---|---|
listener | 结会回调。详见MoRspListener |
成功回调Void
失败回调error
验证入会密码
MoSDK.inputConfPassword(String password)
注:进入加密会议时收到MoRspListener的
onConfPasswd()
的回调显示输入密码界面后点确认调用此接口,如果入会密码错误会重新回调onConfPasswd()
参数 | 说明 |
---|---|
password | 入会密码 |
放弃入加密会议
MoSDK.giveUpInputConfPasswd()
获取会议列表
MoSDK.getConfList(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 会议列表回调。详见MoRspListener |
成功回调ReqVConfResult
失败回调error
获取当前会议详情
MoSDK.getConfInfo(MoRspListener listener)
参数 | 说明 |
---|---|
listener | 会议详情回调。详见MoRspListener |
成功回调ReqConfInfoResult
失败回调error
获取会议链接
MoSDK.getConfShareLink(String meetingId, MoRspListener listener)
参数 | 说明 |
---|---|
meetingId | 会议id,注意不是会议号e164,需先通过getConfInfo得到会议id |
listener | 会议链接回调。详见MoRspListener |
成功回调ReqMeetingLinkResult
失败回调error
开关语音激励
MoSDK.toggleIndication(boolean b)
参数 | 说明 |
---|---|
b | true:开启语音激励,false:关闭语音激励 |
开关麦克风
MoSDK.setRecordMute(boolean mute)
参数 | 说明 |
---|---|
mute | true:本地哑音,false:取消本地哑音 |
开关扬声器
MoSDK.setSilence(boolean silence)
参数 | 说明 |
---|---|
silence | true:本地静音,false:取消本地静音 |
开关摄像头
MoSDK.pausePublishStream(boolean pause)
参数 | 说明 |
---|---|
pause | true:关闭摄像头暂停发布码流,false:开启摄像头恢复发布码流 |
哑音其他终端
MoSDK.setMuteOther(String e164, boolean mute)
注:需要会议管理员(主席)权限
参数 | 说明 |
---|---|
e164 | 远端e164号 |
mute | true:哑音,false:取消哑音 |
申请管理权(主席)
MoSDK.applyChairReq()
申请后等待ConfCtrlListener的
onChairmanRoleChange
推送结果,申请后至少等待一分钟才能继续申请,请勿连续申请
释放管理权(主席)
MoSDK.releaseChairReq()
注:需要会议管理员(主席)权限
转让管理权(主席)
MoSDK.specChairmanRsp(String e164)
注:需要会议管理员(主席)权限
参数 | 说明 |
---|---|
e164 | 被转让者e164号 |
延长会议时间
MoSDK.extentMeetingTime(int time)
注:需要会议管理员(主席)权限
参数 | 说明 |
---|---|
time | 延长时间,单位:分钟 |
获取所有与会方
MoSDK.getAllConferees()
返回与会方列表,详见Conferee
找到双流与会方
MoSDK.findAssConferee()
返回双流与会方,详见Conferee
找到合成画面与会方
MoSDK.findVmpConferee()
返回合成画面与会方,详见Conferee
找到自己
MoSDK.findMySelf()
返回自己与会方,详见Conferee
设置登录状态监听
MoSDK.setLoginNtfListener(MoNtfListener.LoginListener listener)
设置会议监听
MoSDK.setConfNtfListener(MoNtfListener.ConfListener listener)
设置会议呼叫监听
MoSDK.setConfCallingNtfListener(MoNtfListener.ConfCallingListener listener)
设置会控监听
MoSDK.setConfCtrlNtfListener(MoNtfListener.ConfCtrlListener listener)
回调说明
MoRspListener主动调用接口结果回调
注:SDK请求成功的结果会以实体类的方式发送到回调接口中,因此在onSuccess(Object obj)中需要将obj强转成对应的实体类使用。
void onSuccess(Object obj)
请求成功回调
- obj - 接口对应的实体类结果,部分接口无需关注此参数
void onFailed(int error)
请求失败回调
- error - 错误码。详见错误码说明
void onDownloadSuccess(long total, String path)
下载完成回调
- total - 下载文件的总大小
- path - 已下载的文件路径
void onDownloadProcess(int progress, long contentSize)
下载进度回调
- progress - 下载进度百分比
- contentSize - 已下载的文件大小
void onConfPasswd()
加入带密码会议的回调
MoNtfListener被动接收平台消息回调
LoginListener登录状态监听
onLoginNtf(int result)
登录异常状态通知
onExceptionLogout(int result)
底层保活失败异常登出通知
- result - 错误码。详见错误码说明
ConfListener会议相关监听
void onConfereeJoined(Conferee conferee)
成员入会通知
void onConfereeLeft(Conferee conferee)
成员离会通知
void onConfereePublishStream(Conferee conferee)
与会成员发布码流通知
void onConfereeUnPublishStream(Conferee conferee)
与会成员取消发布码流通知
void onVoiceIndication(Conferee conferee)
语音激励方通知
void onMeetingBroadCastConferee(Conferee conferee)
会议广播通知
void onSpeakerChanged(@Nullable Conferee conferee)
发言人变更通知
- conferee - 与会方。详见Conferee
void onRemoteCameraState(String e164, boolean isOpen)
远端摄像头状态通知
- e164 - 与会方e164号
- isOpen - true:摄像头开启,false:摄像头关闭
void onRemoteSilence(String e164, boolean isSilence)
远端扬声器状态通知
- e164 - 与会方e164号
- isSilence - true:扬声器关闭,false:扬声器开启
void onRemoteMute(String e164, boolean isMute)
远端麦克风状态通知
- e164 - 与会方e164号
- isMute - true:麦克风关闭,false:麦克风开启
void onConfFinished(int reason)
会议结束通知
- reason - 错误码。详见错误码说明
void onLocalDual(Conferee conferee, boolean isStart, int result)
本地双流预览状态通知
void onConfStatistics(ConfStatistics confStatistics)
会议信息统计通知
- confStatistics - 会议统计。详见ConfStatistics
void onVmpParam(List<Conferee> confereeList, int style, boolean bForce, int mod)
画面合成参数通知
- confereeList - 与会方。详见Conferee
- style - 画面风格类型
- bForce - 是否强制。true:强制,false:不强制
- mod - 画面风格模式
ConfCallingListener会议呼叫监听
void onInvite(String confId, String confName)
会议呼叫通知
void onCancelInvite(String confId, String confName)
会议呼叫取消通知
- confId - 会议号
- confName - 会议名称
ConfCtrlListener会控相关监听
void onMute(boolean isMute, boolean isLocal)
本地哑音状态推送
- isMute - true:哑音,false:不哑音
- isLocal - true:本地操作,false:远端操作
void onSilence(boolean isSilence, boolean isLocal)
本地静音状态推送
- isSilence - true:静音,false:不静音
- isLocal - true:本地操作,false:远端操作
void onMuteOther(String e164, boolean isMute)
远端哑音状态推送
- e164 - 远端e164号
- isMute - true:哑音,false:不哑音
void onConfMemberStatusChange()
会议管理方或发言方变更推送
void onConfIdentityChange()
会议身份变更推送,如自己由互动方变成观众方
void onSeeBroadcastCmd(boolean isOpen, Conferee conferee)
强制广播推送
强制广播推送(兼容老平台)void onSeeBroadcastForce(boolean isOpen, Conferee conferee)
- isOpen - true:开启,false:关闭
- conferee - 推送关注的与会方。详见Conferee
void onAddWatermark(boolean open)
会管水印开关推送
- open - true:开启水印,false:关闭水印
void onSimpleMsg(String msg)
会管推送的短消息
- msg - 消息内容
void onChairmanRoleChange(boolean isChair)
本地管理员状态推送
- isChair - true:被授予管理员,false:被取消管理员/授权未同意
void onConfWilled(int leftTime)
会议即将结束推送
- leftTime - 剩余时间(分钟)
void onExtentMeetingTimeRsp(int delay)
管理员操作延迟会议的结果通知
void onDelayConfTime(int delay)
成员收到的延迟会议通知
- delay - 延长的时间(分钟)
void onApplyChairNtf(@Nullable Conferee conferee)
其他终端申请管理员权限推送
- conferee - 申请者。详见Conferee
void onFeccCmdNtf(int action, int request)
会管控制摄像头推送
- action - 指令
- request - 方向/大小
void onConfDumb(boolean confDumb)
会议全体哑音通知
- confDumb - true:全体哑音,false:解除全体哑音
void onConfDualModel(int confDualModel)
会议共享模式通知
- confDualModel - 0:发言会场,1:任意会场
void onConfNotDisturb(boolean isNotDisturb)
会议免打扰通知
- isNotDisturb - true:开启会议免打扰,false:关闭会议免打扰
void onMixModeChanged(int mode)
会议混音状态切换推送
- mode - 0:普通关闭,1:普通开启,3:关闭语音激励下混音,4:语音激励下开启混音
实体类说明
MoConfig
字段 | 类型 | 说明 |
---|---|---|
confBitrate | int | 会议码率,单位kb/s,默认2048 |
firstMute | boolean | 是否以哑音入会,默认正常入会 |
openCamera | boolean | 是否关闭摄像头入会,默认开启 |
showBadge | boolean | 是否开启画面台标,默认开启 |
LoginRtcResult
字段 | 类型 | 说明 |
---|---|---|
e164 | String | 登录的e164号 |
CreateConfParam
字段 | 类型 | 说明 |
---|---|---|
name | String | 会议名称 |
duration | int | 会议时长,单位分钟 |
bitrate | int | 会议码率,单位kb/s |
conf_type | int | 会议类型,见ConfType |
max_join_mt | int | 最大与会终端数 |
bHighDefinition | boolean | 是否高清会议,true:1080P false:720P |
virtualConfId | String | 虚拟会议室ID |
isCreateVirtual | boolean | 是否创建虚拟会议 |
isOnlyMoyun | boolean | 是否摩云平台专属 |
CreateConfResult
字段 | 类型 | 说明 |
---|---|---|
conf_id | String | 会议号码 |
meeting_id | String | 视频会议唯一id |
machine_room_moid | String | 机房moid |
JoinConfResult
字段 | 类型 | 说明 |
---|---|---|
confE164 | String | 会议号 |
confName | String | 会议名称 |
ConfStatistics
字段 | 类型 | 说明 |
---|---|---|
mSendStatisticsList | List | 本地发送统计。详见LocalSendStatistics |
mRecStatisticsList | List | 远端接收统计。详见RemoteRecStatistics |
LocalSendStatistics
字段 | 类型 | 说明 |
---|---|---|
id | int | 第几路码流(小流=0,中流=1,大流=2;音频为-1) |
type | int | 码流类型(音频统计为-1) |
videoProtocol | String | 视频协议 |
audioProtocol | String | 音频协议 |
frameRate | int | 帧率 |
width | int | 视频宽度 |
height | int | 视频高度 |
bitrate | double | 码率(kbps) |
isVideo | boolean | 是否为视频统计 |
jitter | int | 抖动(ms) |
roundTripDelay | int | 延时(ms) |
lossRate | long | 丢包率 |
pLossCount | int | 丢包总数 |
RemoteRecStatistics
字段 | 类型 | 说明 |
---|---|---|
id | int | 第几路码流(小流=0,中流=1,大流=2;音频为-1) |
e164 | String | 与会方e164号(混音流为空) |
name | String | 与会方昵称 |
type | int | 码流类型(音频统计为-1) |
frameRate | int | 帧率 |
frameCount | int | 接收帧数 |
protocol | String | 码流协议 |
width | int | 视频宽度 |
height | int | 视频高度 |
bitrate | double | 码率(kbps) |
isVideo | boolean | 是否为视频统计 |
jitter | int | 抖动(ms) |
roundTripDelay | int | 延时(ms) |
pkLoseRate | long | 丢包率 |
pkLoseCount | int | 丢包总数 |
ReqVConfResult
字段 | 类型 | 说明 |
---|---|---|
total | int | 会议总数 |
confs | List | 会议信息。详见VConf |
VConf
字段 | 类型 | 说明 |
---|---|---|
name | String | 会议名称。最大字符长度:128个字节,最大字符:32字符 |
user_domain_moid | String | 会议所属的用户域moid |
user_domain_name | String | 会所属的的用户域名称 |
meeting_room_name | String | 虚拟会议室名称,当返回为空字符串时说明不是召开的虚拟会议室 |
conf_id | String | 会议号。最大字符长度:48个字节 |
conf_level | int | 会议级别:1-16, 值越小, 级别越高(用于抢呼已在其他会议里的终端) |
enable_rtc | int | 是否允许RTC接入0-关闭;1-开启; |
voice_activity_detection | int | 是否开启语音激励0-否;1-是; |
vacinterval | int | 语音激励敏感度(s),最小值3s, 开启语音激励时有效 |
conf_type | int | 会议类型0-传统;1-端口;2-SFU纯转发会议; |
watermark | int | 是否开启视频水印0-未开启;1-开启; |
conf_category | int | 会议类别0-多点会议;1-调度会议;2-点对点; |
start_time | String | 会议开始时间(ISO8601:2000格式表示) |
end_time | String | 会议结束时间(ISO8601:2000格式表示) |
duration | int | 会议时长。0为永久会议 |
bitrate | int | 会议码率 |
closed_conf | int | 会议免打扰。0-关闭;1-开启; |
safe_conf | int | 会议安全。0-公开会议;1-隐藏会议; |
encrypted_type | int | 传输加密类型。0-不加密;2-AES加密;3-商密(SM4);6-商密(SM1); |
encrypted_auth | int | 终端双向认证。0-关闭;1-开启; |
mute | int | 初始化哑音。0-否;1-是; |
multi_stream | int | 下级会议中的多流终端回传是否开启。0-不开启;1-开启; |
mute_filter | int | 全场哑音例外,参数为1时,若执行全场哑音操作,主席和发言人不会被哑音,若执行单个哑音操作时可以被哑音0-否;1-是; |
force_mute | int | 全场哑音下是否禁止终端取消自身哑音。0-否;1-是; |
anonymous_mt | int | 是否支持匿名终端入会。0-否;1-是; |
silence | int | 初始化静音。0-否;1-是; |
auto_end | int | 自动结会(少于两个终端时自动结会)。0-不自动结会;1-自动结会; |
preoccupy_resource | int | 预占资源模式(创会时就预占音视频适配器)。0-不预占模式;1-预占模式;2-SFU纯转发模式; |
video_quality | int | 视频质量。0-质量优先;1-速度优先; |
encrypted_key | String | 传输加密AES加密密钥,最大字符长度:16字节 |
dual_mode | int | 双流权限。0-发言会场;1-任意会场; |
public_conf | int | 是否公共会议。0-否;1-是; |
max_join_mt | int | 最大与会终端数。8-小型8方会议;32-32方会议;64-64方会议;192-大型192方会议; |
force_broadcast | int | 是否强制广播。0-不强制广播;1-强制广播; |
fec_mode | int | 是否支持码流纠错。0-关闭;1-开启; |
need_password | int | 是否需要密码。0-否;1-是; |
one_reforming | int | 归一重整,开启该功能后可增强对外厂商终端的兼容,但会使丢包重传失效。0-不启用;1-启用; |
doubleflow | int | 成为发言人后立即发起内容共享。0-否;1-是; |
own_conf | int | 会议是否和我相关(我在会议列表中或我创建的会议)。0-否;1-是; |
enable_audience | int | 是否超大方。0-否;1-是; |
platform_id | String | 创会平台moid |
superior_cascade | int | 是否有上级级联会议室。0-否;1-是; |
subordinate_cascade | int | 是否有下级级联会议室。0-否;1-是; |
meeting_id | String | 视频会议唯一id |
creator | object | 会议发起者。详见VConfCreator |
conf_mode | int | 会议类型, 0:云会议室 1:网络研讨会 |
superconf_mt_num | int | 会议方数 |
VConfCreator
字段 | 类型 | 说明 |
---|---|---|
name | String | 名称 最大字符长度:128个字节 |
account | String | 帐号 最大字符长度:128个字节 |
account_type | int | 帐号类型4-非系统邮箱;5-e164号码;6-电话;7-ip地址;8-别名@ip(监控前端); |
telephone | String | 座机 最大字符长度:地区区号4位-字符电话16位-字符分机10位字符 |
mobile | String | 手机 最大字符长度:15个字节 |
ReqConfInfoResult
字段 | 类型 | 说明 |
---|---|---|
name | String | 会议名称 最大字符长度:128个字节,最大字符:32字符 |
conf_id | String | 会议号 最大字符长度:48个字节 |
conf_type | int | 会议类型 0-传统.1-端口.2-SFU纯转发会议 |
watermark | int | 是否开启视频水印 0-未开启,1-开启 |
start_time | String | 会议开始时间(ISO8601:2000格式表示) |
end_time | String | 会议结束时间(ISO8601:2000格式表示) |
bitrate | int | 会议码率 |
mute | int | 初始化哑音 0-否,1-是 |
silence | int | 初始化静音 0-否,1-是 |
meeting_id | String | 视频会议唯一id |
enable_audience | int | 是否超大方 0-否,1-是 |
duration | int | 会议时长 0为永久会议 |
video_formats | List | 主视频格式列表。详见VideoFormats |
VideoFormats
字段 | 类型 | 说明 |
---|---|---|
format | int | 主视频格式 1-MPEG,2-H.261,3-H.263,4-H.264_HP,5-H.264_BP,6-H.265,7-H.263+ |
resolution | int | 主视频分辨率 1-QCIF,2-CIF,3-4CIF,12-720P,13-1080P,14-WCIF,15-W4CIF,16-4k |
frame | int | 帧率 |
bitrate | int | 码率 |
ReqMeetingLinkResult
字段 | 类型 | 说明 |
---|---|---|
conf_link | String | 会议分享链接 |
特殊类说明
Conferee
与会方抽象信息类,可以是参会者也可以是虚拟终端,仅在会议中使用
- 设置显示用的display,在预览或订阅之前调用
setDisplay(MDisplay display)
- 预览或订阅,内部已做判断,调用者只需关注要不要显示
showDisplay(boolean isShow, VideoQuality videoQuality)
- 获取已设置的display用于添加到layout作显示用
getDisplay()
- 获取与会方类型
getType()
- 判断与会方是不是自己
isMyself()
- 判断与会方是不是双流
isDual()
- 判断与会方是不是哑音状态
isMute()
- 判断与会方是不是双流发送方
isAssSender()
- 判断与会方是不是发言方
isSpeaker()
- 判断与会方是不是主席
isPresenter()
- 获取与会方的订阅质量
getVideoQuality()
MoCacheData
SDK缓存数据及状态类
- 判断当前是否在会议中
MoCacheData.isInConf()
- 判断当前会议是否正在发送双流
MoCacheData.isSharing()
- 判断自己是否为会议主席
MoCacheData.isChairman()
- 判断自己是否为发言人
MoCacheData.isSpeaker()
枚举类说明
ConfType
TRADITIONAL, // 传统媒体会议
PORT, // 端口会议
RTC, // 纯转发会议(webrtc)
MIX, //混合会议(既是端口会议又是纯转发会议)
AUTO, //平台根据会议类型能力和终端支持的协议进行自动匹配
VideoQuality
LOW, //低画质,小流
MEDIUM, //中画质,中流
HIGH //高画质,大流
ConfereeType
NORMAL, //主流
ASS, //双流
VMP, //合成流
UNKNOWN //未知
错误码说明
注:由于功能迭代,部分错误码已经重复和冲突,下个版本会将错误码转换成枚举来统一维护
错误码 | 描述 |
---|---|
0 | 成功 |
1 | 网络异常 |
2 | 网络中途断开连接(上层可立即监听网络状态,如果之后网络恢复正常,可尝试重新连接) |
3 | 参数异常 |
4 | 未进入房间 |
5 | 服务器异常 |
6 | 登录错误:重复注册(账号被另一台机器使用) |
7 | 登录错误:重复注册(本机已经注册成功) |
8 | 登录错误:注册操作太频繁(上次登录还在进行中,还没有返回结果) |
9 | 登录错误:Token错误 |
10 | 加入房间错误:重复入会 |
11 | 加入房间错误:未注册入会 |
12 | 加入房间错误:会议免打扰 |
13 | 被管理员请出 |
14 | 房间被解散 |
15 | 设备开启失败 |
16 | 无推双流权限 |
17 | 前后2次推双流的时间间隔太短(必须3秒以上) |
18 | 创建相互通道失败 |
19 | 扬声器异常 |
20 | 截图操作超时 |
21 | 未知错误 |
22 | 登录错误:无效的域名 |
23 | 登录错误:网络断开连接 |
24 | 加入房间错误:主动加入房间(入会)超时 |
25 | 登录错误:禁止匿名登录 |
26 | 登录错误:未知原因 |
27 | 登录错误:登录保活超时,并且重新尝试失败 |
28 | 加入房间错误:输入密码超时 |
29 | 重复订阅错误 |
30 | 重复取消订阅错误 |
31 | 登录错误:帐号被抢登 |
1280 | 码流发布失败:数据通道尚未建立 |
1281 | 码流发布失败:发送PeerConnection尚未创建 |
1282 | 码流发布失败:尚未加入任何房间 |
1283 | 码流发布失败:平台拒绝发布 |
4097 | SDK初始化失败:OSP初始化失败 |
4098 | SDK初始化失败:RtcAdapter初始化失败 |
4099 | SDK初始化失败:MediaCtrl初始化失败 |
4100 | SDK初始化失败:RtcWrapper初始化失败 |
4101 | SDK初始化失败:AVShareLib初始化失败 |
5376 | 加入房间错误:重定向失败 |
5377 | 加入房间错误:被呼房间号/会议号不存在 |
7777 | 频繁请求 |
8193 | 房间管理(会议控制)操作错误:尚未加入房间(不在会议中) |
8888 | RTC初始化失败 |
9991 | 观众申请发言错误码 |
9992 | 接口参数错误 |
9993 | 平台不支持的请求 |
9994 | 网络断开 |
9995 | 会议服务器未连接 |
9996 | 只有主席才能结会 |
9997 | token获取失败 |
9998 | http请求处理错误 |
9999 | 未知错误 |
12289 | 设备管理错误:无摄像头 |
12290 | 设备管理错误:无麦克风 |
12291 | 设备管理错误:枚举摄像头列表出错 |
22003 | 设备类型限制 |
23002 | 执行数据库失败 |