NemoSDKFactory.GetSDKInstance(),后续通过该实例调用 sdk 方法。
方法 | 描述 |
初始化 sdk | |
配置 SDK(Startup 方法后调用) | |
退出sdk | |
开启并设置故障转储文件(dmp 文件)目录。dmp 文件可用于分析应用程序崩溃 | |
音频配置(入会前配置) | |
音频高级设置(使用操作系统进行音频处理) | |
音频高级设置(回声消除) | |
音频高级设置(背景噪音抑制) | |
音频高级设置(自动调整麦克风增益) |
方法 | 描述 |
三方账号登录 | |
小鱼账号登录 | |
三方账号认证登录 | |
三方授权登录 | |
小鱼账号认证登录 | |
Logout | 退出登录 |
自动注册SDK用户并登录(支持强密码登录) | |
刷新token (支持版本:v3.3及以上) |
方法 | 描述 |
获取硬件的序列号,用于绑定硬件的方式登录 | |
通过绑定硬件方式登录。 | |
使用激活码激活指定的硬件 |
方法 | 描述 |
开始呼叫 | |
切换通话模式 | |
结束会议(所有人被退出会议) | |
应答来电 | |
拒接来电 | |
会中邀请与会者 | |
Hangup | 挂断退出会议 |
修改云会议室密码。注意:这个调用没有回调结果 | |
获取呼叫历史记录,通过 onCallHistoryInfo 回调返回 |
方法 | 描述 |
获取远端音量指示器 | |
获取视频控件 | |
获取摄像头视频控件 | |
设置视频控件背景色。当视频尺寸宽高比不等于控件宽高比时,填充此色 | |
使能多个发言者标记 | |
设置活动内容(发送 Content 前设置为 true,请求 Content 前设置为 false) | |
在 1+N【一个大画面+N 个小画面】 自动布局时,用来指定大画面 ,如果不指定,SDK 层自动指定当前讲话者为大画面 | |
开关自定义布局 | |
请流及设置自定义布局 | |
订阅 ROSTER【与会者】信息 | |
请求会中指定 Roster 信息,length 支持最大 20 方,当超过 20 时候按照 20 方请求 | |
订阅出入会通知 |
方法 | 描述 |
获得屏幕列表 | |
获取媒体设备列表 | |
选中一个设备 | |
控制远端摄像头转动 | |
摄像头本地镜像设置 | |
旋转视频采集画面(顺时针) | |
设置是否禁用视频流 | |
开启摄像头 | |
关闭摄像头 | |
设置扬声器音量 | |
是否关闭扬声器 | |
是否关闭麦克风 | |
获取扬声器音量 | |
获取本地麦克风音量 | |
打开麦克风 | |
关闭麦克风 | |
打开扬声器 | |
关闭扬声器 | |
获取扬声器指示器音量 | |
设置扬声器指示器音量 | |
获取麦克风指示器音量 | |
设置麦克风指示器音量 | |
【共享音视频流功能】使用外部媒体输入,功能一与功能二互斥,前两参数为 true 时后两参数必为 false,反之亦然;启用此功能后使用接口:InputExternalVideoData 与 InputExternalAudioData 进行内容输入 | |
【共享音视频流功能】输入外部视频数据 | |
【共享音视频流功能】输入外部音频数据 | |
设置是否返回旁路音频 | |
音频诊断接口,开启音频数据 dumper | |
音频诊断接口,关闭音频数据 dumper | |
标记当前 dumper 数据 | |
会议中获取本地一帧图片数据 | |
设置最大发送分辨率 |
方法 | 描述 |
使能麦克风检测 | |
开始播放音频(可用于扬声器检测) | |
停止播放音频 | |
获取扬声器检测音量值 | |
获取麦克风检测音量值 |
方法 | 描述 |
如果你被管理员禁言了,调用这个方法请求发言 | |
通知管理员发言结束 | |
取消 【请求发言】请求 | |
签到确认 | |
获取签到 投票 答题所需互动的URL | |
获取会控URL (支持版本:仅v2.29) | |
获取会控URL (支持版本:v3.3及以上) |
方法 | 描述 |
开始白板分享 | |
停止白板分享 | |
开始绘制 | |
继续绘制 | |
清除白板内容 |
方法 | 描述 |
开启内容共享 | |
停止内容共享 | |
选择共享的桌面 | |
开始抓屏 | |
停止抓屏 | |
暂停抓屏 | |
获取应用列表信息获取应用列表信息 | |
停止内容共享 | |
AppSharingIgnoreCoveredWindow
| 是否忽略遮盖的Window |
| 获取窗口可见区域 |
获取顶层窗口 | |
获取正在分享的window句柄 | |
设置不忽略的窗口句柄 | |
设置忽略的句柄 | |
| 使能区域共享 |
更新共享区域 | |
是否使用流畅模式 |
方法 | 描述 |
开启媒体文件共享 | |
停止媒体文件共享 | |
媒体文件初始化设置 | |
开始分享 | |
暂停分享 | |
停止分享 | |
设置指定时间 | |
设置分享时的媒体音量 | |
释放媒体文件共享资源 | |
获取媒体显示控件 | |
获取媒体文件信息 |
方法 | 描述 |
开启批注 | |
结束批注 | |
更新批注信息 | |
开始绘制批注 | |
继续绘制批注 | |
接收到对应批注后,通知远端 | |
开始标注前设置是否需要清除所有批注 | |
清除所有批注 |
方法 | 描述 |
开始本地录制 | |
停止本地录制 | |
更新本地录制布局 | |
设置本地录制路径 |
方法 | 描述 |
开始远端录制 | |
暂停云端录制 | |
恢复云端录制 | |
停止云端录制 | |
查询录制权限 |
方法 | 描述 |
选择路由线路 | |
设置默认路由 | |
获取设置的路由 | |
socks代理 | |
验证socks代理 |
方法 | 描述 |
开始网络测试 | |
探测所有网络线路 | |
停止网络测试 | |
专有云内网直播网络探测 |
方法 | 描述 |
获取呼叫中媒体和网络的统计信息。 |
方法 | 描述 |
设置能否获取多个本地视频窗口。 | |
获取本地视频窗口。 | |
获取本地视频预览窗口 | |
设置虚拟背景模式。 | |
设置虚拟背景图片路径。 | |
设置美颜或滤镜。 | |
获取该用户之前设置的虚拟背景及美颜状态。 | |
添加或者更新该用户设置的虚拟背景及美颜状态。 | |
获取用户添加的自定义图片数据。 | |
添加自定义图片信息。 | |
删除自定义图片信息。 | |
获取GPU信息,通过OnGPUInfoResult回调结果。 | |
设置可用的GPU信息。 |
方法 | 描述 |
设置本地输入语言(Chinese、English) | |
设置呼叫时检测是否支持通话字幕功能 |
方法 | 描述 |
上传日志/反馈 | |
设置H323硬件设备键盘值 | |
使用网关时,获取H5页面需要调用的Javascript方法 |
APP 层通过该接口接受 SDK 层事件
public interface INemoSDKCallbacks
{
// 返回错误码。和状态无关。
void OnSDKError(SDKError error);
// 返回登录状态
void OnLoginState(SDKLoginState state, SDKError error, SDKLoginInfo info/*only valid when state==LoggedIn*/);
// 返回呼叫状态
void OnCallState(SDKCallStateInfo callStateInfo);
//返回呼叫信息
void OnCallUrlInfo(SDKCallUrlInfo callInfo);
// 返回添加与会者状态
void OnAddCalleeSate(SDKAddCalleeSate state);
// 返回远端视频流状态,信息
void OnVideoStreams(SDKVideoStreamInfo[] streams, int participantNumber);
// 返回本地媒体设备事件
void OnDeviceEvent(SDKDeviceEventParam evtParam);
// 返回 PCI采集卡线缆插入状态
void OnVideoInputLockedState(string deviceId, bool locked);
// 摄像头第一帧采集完成
void OnVideoFirstFrameCaptured(string deviceId);
// 返回被叫信息。 被呼叫时触发。如何接听呼叫,请参考 AcceptCall 方法。
void OnIncomingCall(SDKIncomingCallInfo callInfo);
// 返回和账号关联的云会议室号码
void OnMeetingRoomInfo(SDKMeetingRoomInfo info);
// 返回修改云会议室密码的结果
void OnChangeMeetingroomPasswordResult(bool succeeded);
// 许可证激活结果
void onLicenseActivationResult(bool succeeded, SDKLicenseInfo result);
// 许可证信息。1) 使用序列号方式登录后返回。 2)快要到期前每天返回
void onLicenseInfo(SDKLicenseInfo info);
// 返回内容共享状态
void OnContentState(SDKShareState state);
//返回媒体文件状态
void OnMediaFileState(SDKShareState state);
//返回媒体文件事件
void OnMediaFileEvent(SDKMediaFileEvent fileState);
// 返回会控状态
void OnConfManagmentState(SDKConfManagmentState state);
//会控清除举手
void OnAccessServerHandDownNotify();
/// <summary>
/// 返回ROSTER(与会者)信息。开启自定义布局时,APP层会收到该事件,请勿使用该回调线程直接处理SetCustomLayout;
/// </summary>
/// <param name="info">Roster信息</param>
void OnRosterInfo(SDKRosterInfo info);
/// <summary>
/// 全量ROSTER(与会者)信息
/// </summary>
/// <param name="info"></param>
void OnBulkRosterInfo(SDKBulkRosterInfo info);
// 返回MIC阵列信息
void OnMicArrayBestMicChanged(int micIndex);
// 网络拓扑结构测试结束通知。
// 如果 OnLoginState 返回的 needNetworkTopolotyDetection 字段为 TRUE, APP层需要继续等待这个事件。
void OnNetworkTopologyDetectionFinished();
// 网络状况指示器 lvl [1, 4], 1最差,4最好
void OnNetworkIndicatorLevel(int lvl);
// 在已登录的情况下这个回调接口上报网络连接状况。未登录的情况下不上报。
// 1) 如果是在呼叫中:
// 如果 App层收到 OnNetworkStateChanged( connected==false), App层应该禁止用户除了挂断外的其他操作。
// 如果在 40 秒内恢复网络连接, 通话继续进行,否则App层会收到 OnCallState(state==disconnected) 消息
// 2) 如果不是在呼叫中:
// 如果 App层收到 OnNetworkStateChanged( connected==false), App层应该禁止用户发起呼叫操作。
void OnNetworkStateChanged(bool connected);
// 这个接口返回 经过音频增强(AE)处理过的 MIC 采集数据.
// 注意点:
// 1. audioData.dataPtr 字段包含有 非托管缓冲区的指针 (void * 类型)
// 请使用 System::Runtime::InteropServices::Marshal::Copy 方法拷贝到托管缓冲区。
// 2. 这个方法在音频采集线程里面调用,请在该方法里面拷贝数据后立即返回(处理时间不应超过 5毫秒)
// 3. 必须在回调线程里面完成数据拷贝, 不要切换线程。 切换线程后 audioData.dataPtr 将指向无效缓冲区
void onMicDataByAEReady(SDKAudioData audioData);
/// <summary>
/// 声音质量诊断结果
/// </summary>
/// <param name="type">数据上报类型</param>
/// <param name="audioQuality">质量分析结果</param>
/// 注意:
/// NA表示没有结果
/// 上报周期:
/// 1. 通知:每10秒上报一次
/// 2. 统计:每5分钟上报一次,如果达到统计上报条件,该周期通知下将被统计替换
/// 上报方式:
/// 1. 通知:针对当前10秒数据,上报Notify
/// 2. 统计:针对当前所有数据,上报Statistics
void onAudioQualityAnalysis(SDKNotifyType type, SDKAudioQuality audioQuality);
// 这个回调接口返回会控发送的字幕消息
void OnCaptionNotification(SDKCaptionNotify capNotify);
// 上传日志接口返回上传结果
void onLogUploadResult(bool result, int errorCode);
void onLogUploadProgress(int progress);
/// <summary>
/// 返回会议中正在讲话人员列表(按声音能量从大到小进行排序),SDK初始化后调用 EnableNeedSpeakers(true)即可收到此回调
/// </summary>
/// <param name="speakersList">当前讲话者列表</param>
void onCurrentSpeakers(List<CurrentSpeakersInfo> speakersList);
/// <summary>
/// 调用GetCallHistoryInfo后,该回调返回呼叫历史记录列表
/// </summary>
/// <param name="historyInfos">历史记录列表</param>
void onCallHistoryInfo(List<SDKCallHistoryInfo> historyInfos);
/// <summary>
/// 录制状态通知回调
/// </summary>
void onRecordingStateNotification(SDKRecordStateNotifyInfo notifyInfo);
// 录制中状态改变回调
void OnRecordingStateChanged(SDKRecordStateChangedManaged stateChangedInfo);
/// <summary>
/// 录制鉴权结果回调
/// </summary>
void OnRestRecordAuthResult(SDKRecordAuthor sDKRecordAuthor);
/// <summary>
/// 白板状态变化
/// </summary>
void onWhiteboardStateChanged(SDKWhiteboardStateInfoManaged info);
/// <summary>
/// 白板与服务端连接状态
/// </summary>
void onWhiteboardServerConnChanged(SDKWSConnectionStatus status);
/// <summary>
/// 白板打开
/// </summary>
void onWhiteboardOpened(int width, int height);
/// <summary>
/// 白板关闭了
/// </summary>
void onWhiteboardClosed();
/// <summary>
/// 白板内容数据回调
/// </summary>
void onWhiteboardLineDrawed(SDKDrawLineResponseData data);
/// <summary>
/// 清除白板所有内容
/// </summary>
void onWhiteboardAllLinesCleared();
/// <summary>
/// 等候室
/// </summary>
void onHoldMedia(int callIndex, bool onHold);
/// <summary>
/// 出入会通知
/// </summary>
void OnInOutReminder(SDKReminderInfo[] reminderUserList);
/// <summary>
/// 啸叫检测
/// </summary>
void OnHowlingDetected(bool detected);
/// <summary>
/// Socks5代理
/// </summary>
void OnSocksProxyValidateCompleted(string errorCode);
/// <summary>
/// 本地录制状态变化
/// </summary>
void OnLocalRecordStatusChanged(bool isInRecord, string bizId);
/// <summary>
/// 本地录制结果
/// </summary>
void OnLocalRecordResult(bool isSuccess, SDKLocalRecordCode code, string filePath, string bizId);
/// <summary>
/// 本地录制数据库变化
/// </summary>
void OnLocalRecordDbChanged(SDKLocalRecording[] records);
/// <summary>
/// 录制文件处理完成
/// </summary>
/// <param name="bizId"></param>
/// <param name="stroreDir">存储路径</param>
void onFileReady(string bizId,string stroreDir);
/// <summary>
/// 获取路由线路回调
/// </summary>
void OnGetRouteOptions(SDKRouteOptionsResponse routeOptions);
/// <summary>
/// 设置的路由线路回调
/// </summary>
void OnSetRouteSelectedOption(string _sitePathId);
/// <summary>
/// 获取线路对应的探测地址
/// </summary>
void OnGetNetTestServer(SDKNetToolServerResponse netTestServerResp);
#region 网络测试
/// <summary>
/// 网络探测正常结果
/// </summary>
/// <param name="result"></param>
void OBwTestResult(SDKBwTestResult result);
void OnPingResult(SDKPingResult result);
void OnDisplay(SDKDisplay display);
void OnTracerouteResult(SDKTracerouteResult result);
void OnPingException(SDKPingException exception);
/// <summary>
/// 网络探测异常信息
/// </summary>
/// <param name="exception">异常信息</param>
void OnBwTestException(SDKBwTestException exception);
void OnStatInfo(SDKStateInfo stateInfo);
/// <summary>
/// 网络探测完成(本次探测全部结束)
/// </summary>
void OnNetTestComplete();
/// <summary>
/// 专有云内网直播探测结果
/// </summary>
/// <param name="ipSiteCode"></param>
/// <param name="error"></param>
void OnIntraWatchDetectResult(KeyValuePair<string, string> ipSiteCode,SDKError error);
#endregion
/// <summary>
/// 监会模式,默认静音回调
/// </summary>
void OnMonitorHideModeAudioMute();
//app share
// 分享app捕获状态发生变化
//isClosed:正在分享的应用被关闭
//isOccluded:正在分享的应用被遮挡
//isPaused:暂停分享状态
void OnAppWindowCaptureState(bool isClosed, bool isOccluded, bool isPaused);
// annotation callbacks
void OnAnnotationStateChanged(SDKAnnotationStateInfo info);
void OnAnnotationServerConnChanged(SDKWSConnectionStatus status);
void OnAnnotationOpened(int width, int height);
void OnAnnotationClosed();
void OnAnnotationLineDrawed(SDKDrawLineResponseData data);
void OnAnnotationAllLinesCleared();
void OnAnnotationNotifyLineRecved(SDKNotifyRecvedCommandMetaData data);
void OnAnnotationVideoStreamInfo(SDKAnnotationVideoStreamInfo sdkInfo);
void OnGPUInfoResult(string[] gInfo);
void OnGPUBlackInfo(string[] gInfo);
#region 应用鉴权
/// <summary>
/// 鉴权refresh token信息(RefreshToken的结果回调)
/// </summary>
/// <param name="tokenExpiresTimeFromNow">token有效时间(单位: 秒)</param>
/// <param name="error"></param>
void OnRefreshTokenResult(long tokenExpiresTimeFromNow, SDKError error);
#endregion
#region 签到 问卷 答题 投票
// 签到 问卷 答题 投票的消息回调
void onAccessServerVoteSignature(SDKConfMgmtVoteSignature votesig);
//结果
void onSignResponse(SDKSignResponse rlt);
//公布投票 答题结果
void onAccessServerAnswerPublish(SDKConfMgmtAnswerPublish result);
//关闭结果展示
void onAccessServerCloseAnswerResult();
#endregion
#region 同传字幕
//AI字幕
void onAiCaption(SDKAiCaptionInfo aiCaptionInfo);
#endregion
}
// SDK 配置参数。在呼叫前设置
public class SDKConfig
{
public SDKConfig()
{
maxSendVideoResolution = SDKMaxVideoResolution.MaxVidResUnkwon;
maxRecvVideoResolution = SDKMaxVideoResolution.MaxVidResUnkwon;
maxVideoFrameRate = SDKMaxVideoFrameRate.MaxVideoFrameRateUnknown;
layoutMode = SDKLayoutMode.Layout_1_Plus_N;
enableThumbVdieo360p = true; // 缺省为 360p
checkAiCaption = false;
}
#region 应用鉴权
// 应用Id
public string clientId;
// 秘钥
public string clientSecret;
#endregion
// 以下服务器地址默认为空。只有在需要的情况下设置。
// HTTP代理,缺省为空
public SDKProxy httpProxy;
// udp 转发服务器 。缺省为空。
public SDKProxy udpProxy;
// 设置登录服务器。用于私有云。缺省为公有云。
public string loginServer;
// 1+N 自动布局模式下,小视频窗口请求 360p。设置为false时请求 180p
public bool enableThumbVdieo360p;
// 最大视频发送分辨率
public SDKMaxVideoResolution maxSendVideoResolution;
// 最大视频接收分辨率
public SDKMaxVideoResolution maxRecvVideoResolution;
public SDKMaxVideoFrameRate maxVideoFrameRate;
// 布局模式。这里用于指定自动布局模式
public SDKLayoutMode layoutMode;
//检测是否支持同传字幕
public bool checkAiCaption = false;
}
// 用来指定最大的视频能力
public enum SDKMaxVideoResolution
{
// 目前只有在私有云的环境下支持 1080p。
// ( 通过设置 SDKConfig.loginServer 字段来登录到私有云)
MaxVidRes1080p, // 1920x1080
MaxVidRes720p, // 1280x720
MaxVidRes360p, // 640x360
MaxVidRes180p, //320x180
MaxVidResUnkwon, //内部默认值
}
// 用来指定最大的视频能力
public enum SDKMaxVideoFrameRate
{
// 视频最大帧率 30
MaxVideoFrameRate30 = 30,
// 视频最大帧率 60
MaxVideoFrameRate60 = 60,
//内部默认值
MaxVideoFrameRateUnknown = 0
}
// 代理服务器地址
public class SDKProxy
{
public string hostAddress;
public ushort port;
}
//音频配置
public class SDKAudioConfig
{
//音频质量诊断开关, 1打开,0关闭
public int audioQualityAnalysis = -1;
//回声前向搜索范围,即往过去时间寻找回声的范围,单位毫秒
//取值范围: 10 ~ 1500
public int forthDelay = -1;
//回声后向搜索范围,即往将来时间寻找回声的范围,单位毫秒
//取值范围: 10 ~ 1500
public int backDelay = -1;
//初始延时,呼叫开始时辅助采集和参考对齐
//取值范围: -300 ~ 1000
public int initDelay = -1;
//开启异常条件下重置AE,包括队列调整异常,回声检测异常
//0表示关闭,
//1表示普通,开启异常队列调整重置AE
//2表示加强,开启队列调整异常重置AE + 回声检测异常调整AE
public int resetAE = -1;
//重置AE需要满足的异常参数阈值,即帧数
//取值范围: 100 ~ 6000
public int resetAEThreshold = -1;
}
//声音质量
public class SDKAudioQuality
{
/// <summary>
/// 回声状态
/// 可能的取值包括:
/// - "continuous_echo":表示完整的回声状态
/// - "jitter, short_echo":表示抖动/短暂回声状态
/// - "init_echo":表示初始回声状态
/// - "sane":表示正常状态
/// </summary>
public string echo_status;
/// <summary>
/// 截波(clipping)状态
/// 可能的取值包括:
/// 呼叫中上报:
/// - "sane",正常状态
/// - "insane",无程度估计,因为数据不够充分
/// 呼叫结束上报:
/// - "sane",正常状态
/// - "severe":表示严重的截波状态
/// - "medium":表示中度的截波状态
/// - "light":表示轻度的截波状态
/// </summary>
public string clipping;
}
//数据上报类型
public enum SDKNotifyType
{
Notify, //通知
Statistics, //统计
Unknown
}
// SDK 错误类型
public enum SDKError
{
XYSDK940000, //NoError 成功
XYSDK940001, // SDK文件校验失败
XYSDK940002, //TOKEN_OVERDUE, token过期
XYSDK940003, //REFRESH_TOKEN_OVERDUE, refresh_token过期
XYSDK940004, //NOT_AUTHENTICATEDE, 接口访问未进行token验证
XYSDK940005, //SignatureCheckFail, api网关签名异常
XYSDK940006, //正在进行中(网络探测)
XYSDK940201, //InvalidExtId 企业ID认证失败
XYSDK940202, //NotLoggedIn 未登录
XYSDK940203, //InvalidExternalUserId 登录无效的第三方用户ID
XYSDK940204, //账户已停用
XYSDK940205, //认证授权码不合法
XYSDK940206, //认证授权码已被使用
XYSDK940207, //认证授权码已过期
XYSDK940208, //未知登录方式(预留位置 暂不可用)
XYSDK940209, //用户名称不合法
XYSDK940210, //无效账号/密码
XYSDK940301, //WrongState 呼叫状态错误
XYSDK940302, //WrongPassword, 呼叫密码错误
XYSDK940400, //InvokeFunctionParamError,输入参数不合法
XYSDK940401, //输入参数异常,会议号无效
XYSDK940402, //输入参数异常,无效netProtocol
XYSDK940403, //输入参数异常,直播不存在/直播id错误
XYSDK940404, //输入参数异常,直播不属于该企业
XYSDK940405, //输入参数异常,无效的直播id
XYSDK940501, //NetworkError 网络异常
XYSDK940502, //ServerError, 服务器错误
XYSDK940503, //SdkNormalToHung, SDK卡住
XYSDK940504, //SdkHungToNormale, SDK恢复正常
XYSDK940505, //内网直播网络探测超时
}
//登录状态
public enum SDKLoginState
{
LoggedIn, //已登录
LoggingIn, //登录中
LoggingOut, //登出中
LoggedOut //已登出
}
// 登录后的用户信息
public class SDKLoginInfo
{
public long id;
public string userNumber; // 呼叫号码,小鱼后台给登陆账号分配的唯一呼叫号码。
public string userName;
// 登录唯一标识
public string securityKey;
// 这个字段表示正在检测网络拓扑,应用层在呼叫前需要等待 OnNetworkTopologyDetectionFinished事件
public bool isDetectingNetworkTopology;
public SDKConfDevInfo confDevInfo;
}
// 参会设备信息。用于订阅 ROSTER信息。
// 这些信息可以通过登录回调 OnLoginState 获得,或者使用云会议API meetingStatus 获得。
public class SDKConfDevInfo
{
public string deviceId; //设备Id
public int devType; //设备类型
}
// 呼叫状态信息
public class SDKCallStateInfo
{
public SDKCallState callState;
public SDKError sdkError;
// 退出会议的原因。当 sdkError==NoError的时候,可检测这个字段。
public string disconnectReason = "";
// 用于被叫时,返回会议室号码.呼叫接通时这个字段有效
public string meetingNumer = "";
// 当前呼叫的唯一标识
public int callIndex;
// 远端是否为语音模式
public bool remoteAudioOnlyMode = false;
}
// 呼叫状态
public enum SDKCallState
{
Connected, //已连接
Disconnected, //已断开
Connecting, //连接中
Disconnecting //断开中
}
// 添加与会者状态,用户会议中拉人入会
public class SDKAddCalleeSate
{
public bool isSucceeded;
//failed reason
public string reason;
}
// 呼叫中的远端的视频流信息
public class SDKVideoStreamInfo
{
public SDKVideoState videoState;
public string videoSourceId;
public string displayName;
// 呼叫号码, 和 SDKLoginInfo.userNumber 一致。
public string userNumber;
public string extUserId; //三方ID
public uint participantId; //与会者ID
public bool audioMute;
public bool isContent;
// 远端摄像头的转动能力。请参考 SDKFECCCapability
public uint feccOri;
// 标识远端是否主动改变语音模式
public bool receiveAudioOnly = false;
public string remoteID;
public SDKDeviceType remoteType;
public uint videoHeight;
public uint videoWidth;
}
// 视频流状态
public enum SDKVideoState
{
Observing, VideoMute, Requesting, NoBandwidth,
NoDecoder, Received, Telephone, AudioOnly,NoCpuResource, Idle
}
// 外部输入视频格式
public enum SDKVideoType
{
YUY2,
NV12
}
// 视频数据内容
public class SDKVideoData
{
// 值为 true 代表使用外部内容输入,否则使用外部设备输入
public bool isContent;
// 宽度
public UInt32 width;
// 高度
public UInt32 height;
// 行扫字节数
public UInt32 stride;
//视频格式
public SDKVideoType format;
//相同时钟产生的时间戳(ms)
public UInt64 timeStamp; // in milliseconds. must use the same reference-clock as the audio data
//数据指针
public IntPtr dataPtr;
}
// 设备事件参数。当发生热插拔时,这些信息通过回调返回APP
public class SDKDeviceEventParam
{
public SDKMediaDevType devType;
public SDKDeviceEvent evt;
public SDKCameraOrdinal cameraOrdinal; // only used for Camera
public string devId;
}
// 音视频设备类型
public enum SDKMediaDevType
{
Camera = 0,
Microphone = 1,
Speaker = 2,
Unknown = 255
}
// 本地视频画面翻转角度
public enum SDKRotationType
{
Rotation0,
Rotation90,
Rotation180,
Rotation270
};
// 媒体设备信息
public class SDKMediaDevInfo
{
public string devId;
public string devName;
public string devBusLocation;
// 如果是PCI采集卡,当线缆插入式,这个字段为 true
public bool videoInputLocked; // the PCI video capture card has input locked
public _AudioDevInfo audioDevInfo;
public class _AudioDevInfo
{
public bool isDefault; //是否默认音频设备
}
}
// 媒体设备事件
//插入事件顺序OnDeviceEvent:Added-->eDefaultDevChanged
//拔出事件顺序OnDeviceEvent:Removed-->Lost-->eDefaultDevChanged
//注意:Removed/Lost 的回调的设备ID为空
public enum SDKDeviceEvent
{
Added, //设备插入
Removed, //设备拔出
Lost, //设备丢失
eDefaultDevChanged, //默认设备变更
eChooseDevFailed, //选择设备失败
eChooseDevSucceed //选择设备成功
}
// 视频输入设备序号。第一个用于第一路视频流,第二个用于双流时的第二路(内容共享)
public enum SDKCameraOrdinal
{
None, First, Second
}
// 本地视频画面翻转
public enum SDKRotationType
{
Rotation0,
Rotation90,
Rotation180,
Rotation270
};
//被叫信息
public class SDKIncomingCallInfo
{
// 远端号码
public string remoteNumber;
//远端名称
public string remoteName;
// 当前呼叫唯一标识
public int callIndex;
// 远端呼叫模式
public SDKCallMode callMode;
}
//呼叫信息
public class SDKCallUrlInfo
{
public SDKDeviceType deviceType { get; set; } //当前设备类型
public string callUrl { get; set; }
public string callId { get; set; }
public string displayName { get; set; }
public SDKCallNumberType callNumberType; //呼入的号码类型
public bool enablePwd { get; set; }
public int pwdResult { get; set; }
public long deviceId { get; set; }
public string dialNumber { get; set; }
public string callNumber { get; set; }
public string number { get; set; }
public string[] alias { get; set; }
public string avatar { get; set; }
public SDKError sdkError;
}
//呼入/连接的号码类型
public enum SDKCallNumberType
{
Nemo,
CloudMeetingRoom,
Group,
H323,
BRUCE,
TVBOX,
APP,
Unknown
}
// 呼叫模式
public enum SDKCallMode
{
// 音视频呼叫模式
AudioVideo = 0,
ContentOnly = 1,
// 语音呼叫模式
AudioOnly = 4,
// 监会模式(隐身入会)
MonitorHideMode = 5
}
// 和登录账号绑定的云会议室的信息
public class SDKMeetingRoomInfo
{
public string meetingRoomNumber;
public string roomPassword;
}
// 许可证信息。onSDKLicenseInfo 回调接口返回这个信息
// 1)使用序列号的方式登录后会返回一次。
// 2)临近过期的时候,每天会收到一次额外的 onSDKLicenseInfo回调
public class SDKLicenseInfo
{
public string expireDate;// 失效日期, format: yyyy-mm-dd
public int effectiveDays; // 有效天数
}
// 内容共享状态
public enum SDKContentState
{ /<em>空闲</em>/
Idle,
/<em>共享中</em>/
Sending,
/<em>接收中</em>/
Receiving,
/<em>发送带宽不足,可以提示用户关闭共享</em>/
NoBandwidth,
Error
}
//媒体文件分享事件
public class SDKMediaFileEvent
{
public SDKMediaFileEventType eventType; //event type
public SDKMediaFileErrorCode errorCode; //for error
public int position; //for progress
public int duration; //for prepare done
public int videoWidth; //for hasVideo
public int videoHeight; //for hasVideo
public int aspectRatioW; //for hasVideo
public int aspectRatioH; //for hasVideo
public bool hasVideo; //for prepare done
public bool hasAudio; //for prepare done
}
//媒体文件分享事件类型
public enum SDKMediaFileEventType
{
MEDIA_FILE_PREPARE_DONE, //media file prepare done
MEDIA_FILE_ERROR, //media file share error
MEDIA_FILE_START, //media file share start
MEDIA_FILE_PAUSE, //media file share pause
MEDIA_FILE_STOP, //media file share stop
MEDIA_FILE_PROGRESS //media file share progressing
}
//媒体文件分享错误码
public enum SDKMediaFileErrorCode
{
MEDIA_FILE_NO_ERROR,
MEDIA_FILE_ERROR_FILE, //file error
MEDIA_FILE_ERROR_STREAM, //stream error
MEDIA_FILE_ERROR_UNKNOW
}
//媒体文件分享类型
public enum SDKMediaFileType
{
MEDIA_FILE_TYPE_NONE,
MEDIA_FILE_TYPE_AUDIO_ONLY, //only audio
MEDIA_FILE_TYPE_VIDEO_ONLY, //only video
MEDIA_FILE_TYPE_AUDIO_VIDEO //audio and video
};
//分享的媒体文件信息
public class SDKMediaFileInfo
{
public SDKMediaFileType type;
public int width;
public int height;
};
//会控收听禁用状态
public enum SDKConfSpeakerMuteState
{
On,
Off,
Keep
}
// 会议控制状态信息
public class SDKConfManagmentState
{
public bool muteOperationDisabled; // mute operation is disabled by admin, you cannot mute/unmute audio
public bool contentOperationDisabled; // content operation is disabled by admin, you cannot share content now.
public bool whiteboardIsDisabled;//whiteboard operation is disabled by admin, you cannot share whiteboard now.
// Mute: you are muted by admin
// Unmute: you are unmuted by admin
// ForceMute: you are forcibly muted.
public SDKConfAudioMuteState audioMuteState = SDKConfAudioMuteState.UnKown;
public SDKConfSpeakerMuteState muteSpeakerState = SDKConfSpeakerMuteState.Keep;
//是否是主会场模式
public bool isChairmanMode;
public string chairmanUri;
public bool annotationDisabled;
}
// 会控音频禁音状态
public enum SDKConfAudioMuteState
{
Mute, //麦克风关闭
Unmute, //麦克风开启
ForceMute, //强制麦克风关闭
UnKown //未知(无需处理)
}
// 被禁音原因 【ROSTER信息】
public enum SDKMuteReason
{
MuteByUser,
MuteByBWLimit,
MuteByNoInput,
MuteByConfMgmt
}
// ROSTER信息
public class SDKRosterInfo
{
public UInt32 contentSenderPid;
public UInt32 activeSpeakerPid;
public bool recvingVideoContent;
public bool recvingPictureContent;
public bool hasOtherParticipants;
public uint totalParticipants; // 会议中中人数[不包含自己],可能会大于 elementsMap 的size
public Dictionary<UInt32, SDKRosterElement> elementsMap;
}
// ROSTER元素信息【ROSTER信息】
public class SDKRosterElement // information of a single participant
{
//与会者ID
public UInt32 participantId;
public UInt32 feccOri;
// 与会者呼叫号码,同SDKVideoStreamInfo.userNumber
public string deviceAlias;
// 与会者显示名称
public string deviceName;
//calluri
public string deviceId;
//远端设备类型
public SDKDeviceType deviceType;
//第三方用户ID
public string extUserId;
public SDKMuteReason videoMuteReason;
public bool isTelephone;
public bool isObserver;
// 语音模式,远端切换为语音模式后此值为true;
public bool isAudioOnly;
public bool isAudioMute;
// 语音模式,远端切换为语音模式后此值为true;
public bool isVideoMute;
public bool isForceFullScreen;
// 是否是requestRoster请求结果返回的
public bool isRequested;
}
//全量ROSTER类型
public enum SDKBulRosterType
{
BulkRosterTypeFull, //全量数据
BulkRosterTypeIncrement //增量数据
}
//全量ROSTER元素
public class SDKBulkRosterElement
{
public uint participantId; //与会者ID
public SDKDeviceType deviceType;
public string callUri;
public string displayName;
public string Alias;
public bool isAudioMute;
public bool isVideoMute;
}
//全量ROSTER信息
public class SDKBulkRosterInfo
{
public uint totalEpNum; //总终端数
public SDKBulRosterType bulRosterType; //类型
public SDKBulkRosterElement[] addRosterElements; //新增元素
public SDKBulkRosterElement[] updateRosterElements; //更新元素
public string[] delRosterParticipants; //删除元素
}
public enum SDKDeviceType
{
DT_SOFT,
DT_HARD,
DT_BROWSER,
DT_TEL,
DT_RECORD,
DT_DESKTOP,
DT_H323GW,
DT_BRUCE,
DT_TVBOX,
DT_CONFNO,
DT_SHUTTLE,
DT_UNKNOWN = -1
};
// 音频数据内容
public class SDKAudioData
{
// 值为 true 代表使用外部内容输入,否则使用外部设备输入
public bool isContent;
// 音频格式
public SDKAudioSampleType formatType;
// 每秒采样数
public UInt32 samplesPerSec;
// 通道数
public UInt32 numChannels;
// 每样本长度(位)
public UInt32 bitsPerSample;
// 每样本容器长度?(位)
public UInt32 containerSize; // container size per sample in bits
// 相同时钟产生的时间戳(ms)
// in milliseconds. must use the same reference-clock as the video data
public UInt64 timeStamp;
// 数据指针
public IntPtr dataPtr;
// 数据长度
public UInt32 dataLen;
}
// 外部输入音频格式
public enum SDKAudioSampleType
{
PCM = 0,
FLOAT = 1
}
//字幕消息
public class SDKCaptionNotify
{
public class FontSizeDef
{
public const string Big = "big";
public const string Middle = "middle";
public const string Small = "small";
}
public string action; //操作消息动作,“push” 推送消息,“cancel”取消显示消息
public string content; // 消息内容
public string location; // 消息显示位置,top上方显示,middle中间显示,bottom底部显示
public int scroll; // 消息是否滚动,0 不滚动,1 滚动
public string fontRGB;
public string fontFamily;
public string fontSize;
public string backgroundRGB;
public string backgroundAlpha;
public string scrollSpeed;
}
// 当前讲话者,用于UI标记当前正在讲话的用户
public class CurrentSpeakersInfo : IComparable
{
public int EnergyAverage { get; set; }
//与会者ID
public uint ParticipantId { get; set; }
public string CallUrl { get; set; }
// 显示名称
public string DisplayName { get; set; }
// 讲话者号码
public string Number { get; set; }
//第三方登录的用户ID
public string extUserId;
public int CompareTo(object obj)
{
return (obj as CurrentSpeakersInfo).EnergyAverage - this.EnergyAverage;
}
}
// 呼叫历史记录
public class SDKCallHistoryInfo
{
public string id { get; set; }
public string numberType { get; set; }
public string number { get; set; }
public long callTime { get; set; }
public string displayName { get; set; }
public string avatar { get; set; }
public int userProfileId { get; set; }
public SDKCallType callType { get; set; }
public int deviceType { get; set; }
}
// SDK呼叫类型
public enum SDKCallType
{
MakeCall = 0,
AnswerCall = 1,
DropCall = 2
}
// SDK录制通知信息
public class SDKRecordStateNotifyInfo
{
public int callIndex { get; set; }
// 是否已启动录制
public bool isStart { get; set; }
public string uri { get; set; }
public string callUri { get; set; }
public string status { get; set; }
}
//白板状态
public class SDKWhiteboardStateInfoManaged
{
public int callIndex;
public string data;
public string reason;
public SDKWhiteboardStateInfoManaged() {
}
}
//白板与服务端连接状态
public class SDKWSConnectionStatus
{
public bool IsConnected { get; set; }
/**
*错误码参考SDKWSError
*/
public int ErrorCode { get; set; }
public string LocalIP { get; set; }
public SDKWSConnectionStatus(bool isConnected, int errorCode, string localIP)
{
IsConnected = isConnected;
ErrorCode = errorCode;
LocalIP = localIP;
}
}
//白板数据
public class SDKDrawLineResponseData
{
public int type { get; set; }
public string id { get; set; }
public int seq { get; set; }
public int c { get; set; }
public string cid { get; set; }
public SDKWhiteboardPoint[] p { get; set; }
public SDKDrawLineResponseData(int type, string id,int seq,int c,string cid, SDKWhiteboardPoint[] p)
{
this.type = type;
this.id = id;
this.seq = seq;
this.c = c;
this.cid = cid;
this.p = p;
}
public bool IsColorAndWidthDefined(out string definedColor, out int definedWidth)
{
bool bRet = false;
definedColor = string.Empty;
definedWidth = 0;
if (p != null)
{
foreach (SDKWhiteboardPoint iterPoint in p)
{
if (iterPoint.c != null && iterPoint.w != null && iterPoint.w > 0)
{
definedColor = iterPoint.c;
definedWidth = (int)iterPoint.w;
bRet = true;
break;
}
}
}
return bRet;
}
public bool IsLineEnd()
{
bool isEnd = false;
if (p.Length > 0)
{
if (p[p.Length - 1].w != null && p[p.Length - 1].w == 0)
{
isEnd = true;
}
}
return isEnd;
}
// 呼叫中统计信息
public class SDKStatistics
{
public MediaInfo people; // 与会者媒体信息
public MediaInfo content; // 内容共享媒体信息
public NetworkInfo networkInfo; // 网络状况信息
public class VideoRxInfo
{
public string codecType; // 编码器类型 codec type
public string disName; // 显示名称 display name
public int actBw; // 实际带宽 actual bandwidth (in kbps)
public int frameRate; // 帧率 fps
public string resolution; // 分辨率
}
public class VideoTxInfo
{
public string codecType; // 编码器类型
public int actBw;
public int frameRate;
public string resolution;
}
public class AudioInfo
{
public string codecType; // 编码器类型
public string disName; // 显示名称 display name
public int actBw;
}
public class MediaInfo
{
public AudioInfo[] audioRxInfo; // 下行音频数据 receiving audio streams
public AudioInfo[] audioTxInfo; // 上行音频数据 transmitting audio streams
public VideoRxInfo[] videoRxInfo; // 下行视频数据 receiving video streams
public VideoTxInfo[] videoTxInfo; // 上行视频数据 transmitting video streams
}
public class NetworkInfo // average value during every 2 seconds
{
public int rtt; // 往返时间 round trip time (in milliseconds)
public int rxDetectBw; // 统计下行带宽 detected downlink bandwidth ( in kbps)
public int rxJitter; // 统计下行抖动时间 jitters in receiving streams ( milliseconds)
public int rxLost; // 统计下行丢包数 packets lost in receiving streams (percentage)
public int txDetectBw; // 统计上行带宽 detected uplink bandwidth ( in kbps)
public int txJitter; // 统计上行抖动时间 jitters in transmitting streams
public int txLost; // 统计上行丢包数 packets lost in transmitting streams
}
}
/*********************************************<em>
</em> 远端摄像机的转动能力。请使用
<em> SDKVideoStreamInfo.feccOri字段和这些枚举值做按位与运算来判断远端摄像头能力
</em> ********************************************/
public enum SDKFECCCapability
{
FECC_CAP_NONE = 0,
FECC_CAP_HORIZONTAL = (1 << 1),
FECC_CAP_VERTICAL = (1 << 2),
FECC_CAP_FRONT_BACK = (1 << 3),
FECC_CAP_ZOOM = (1 << 4)
}
/*********************************************<em>
</em> 远端摄像机控制
<em> </em>*******************************************/
public enum SDKFECCCommand
{
// 以下各命令中, TURN表示连续转动, STEP表示步进。
FECC_TURN_LEFT = 0, // 连续左转
FECC_STEP_LEFT = 1, // 向左步进
FECC_TURN_RIGHT = 2, // 连续右转
FECC_STEP_RIGHT = 3, // 向右步进
FECC_TURN_STOP = 4, // 水平转动停止。停止 FECC_TURN_LEFT
TILT_CAMERA_TURN_UP = 5, // 向上抬起
TILT_CAMERA_STEP_UP = 6,
TILT_CAMERA_TURN_DOWN = 7, // 向下低头
TILT_CAMERA_STEP_DOWN = 8,
TILT_CAMERA_TURN_STOP = 9,
FECC_ZOOM_IN = 10, // 放大
FECC_ZOOM_OUT = 11, // 缩小
FECC_STEP_ZOOM_IN = 12,
FECC_STEP_ZOOM_OUT = 13,
FECC_ZOOM_TURN_STOP = 14,
FECC_UNKNOWN = 15
}
// 自定义布局元素信息
public class SDKCustomLayoutElement
{
public UInt32 participantId;
public UInt32 width;
public UInt32 height;
public SDKLayoutPriority priority;
public SDKVideoQuality quality;
}
//自定义布局信息
public class SDKCustomLayoutInfo
{
public SDKLayoutMode layoutMode; //
public SDKCustomLayoutElement[] layoutElements;
}
// 视频布局模式。这些是自动布局模式。SDK层自动实现多人视频的布局安排。
public enum SDKLayoutMode
{
Layout_1_Plus_N, // 1个大画面 + N个小画面
Layout_M_by_N, // 对称模式 M X N 个小画面
Layout_Multi720P
}
// 布局优先级 【自定义布局】
public enum SDKLayoutPriority
{
LayoutPriorityHigh,
LayoutPriorityNormal,
LayoutPriorityLow,
LayoutPriorityUnknown
}
// 请求视频质量 【自定义布局】
public enum SDKVideoQuality
{
VideoQualityHigh,
VideoQualityNormal,
VideoQualityBase,
VideoQualityUnknown
}
// 显示器信息,用于桌面共享
public class SDKMonitorInfo
{
public string monitorName;
public System.Drawing.Rectangle monitorRect;
}
//本地录制类型
public enum SDKLocalRecordType
{
LocalRecordType_NonCall, //预留位(暂不支持)
LocalRecordType_Call //会中录制,退会后自动停止录制
}
//本地录制模式
public enum SDKLocalRecordMode
{
LocalRecordMode_Film, //电影模式
LocalRecordMode_Resources, //资源模式(暂不支持)
LocalRecordMode_LayoutMux //(暂不支持)
}
/*视频分辨率 : 16/9 */
public enum SDKVideoResolution
{
VideoResolution90P, /* 90P(暂不支持) */
VideoResolution180P, /* 180P 有效帧率:15fps */
VideoResolution360P, /* 360P 有效帧率:15fps|30fps */
VideoResolution720P, /* 720P 有效帧率:15fps|30fps */
VideoResolution1080P, /* 1080P 有效帧率:15fps|30fps|60fps */
VideoResolution4K, /* 4k 有效帧率:30fps */
VideoResolutionUnknown
};
//本地录制者信息,通过OnLocalRecordDbChanged回调出来
public class SDKLocalRecordBusinessInfo
{
public String title;
public String speaker;
public String confNum; //会议号
}
public class SDKRecordLayout
{
//整个画布的比例长宽。 16:9 , 4:3 等
public int canvasAspectWidth;
public int canvasAspectHeight;
public SDKRecordLayoutElement[] elements; //窗口列表
}
public class SDKRecordLayoutElement
{
public SDKVideoSourceInfo sourceInfo; //视频源信息
public String displayName; //显示名称
// XYLayoutVideoState layoutState;
public bool isVideoReceived; //是否视频接收
public bool isAudioMute; //是否音频mute
//坐标, 均为在canvas 中的比例
public float left;
public float top;
ublic float width;
public float height;
public bool active; //当前活跃(true 显示蓝框)
}
public class SDKVideoSourceInfo
{
public String sourceId;
public int channelId;
public bool bLocalVideoSource; //是否本地视频源
public bool bContent; //是否为共享
}
public class SDKLocalRecording
{
public int id; //database record id
public int fileSize;
public int sequenceId;
public int needUpload;
public int isLastFile;
public String eventId; //classId or meetingId
public String title;
public String speaker;
public String confNumber; //meeting number
public String recordingId;
public String recordingFiles;
public long timeStamp;
}
public class SDKReminderInfo
{
public string remotename;
public string reminderType;
public string extUserId;
}
public class SDKClientParam
{ //开始网络测试参数
public string localIp;
public string osVersion;
public uint pingTimeout;
public bool isAutoDetect;
public uint duration;
public ushort downloadPkgSize;
public uint downloadBitrate;
public ushort uploadPkgSize;
public uint uploadBitrate;
public bool isUdp;
public uint startBitrate;
public string netKey;
public uint netType;
public ulong userId;
public ushort serverPort;
public string serverIp;
public string gwMacAddr;
public string gwIp;
public ushort localPort;
public uint signalLevel;
}
//(仅v3.3.1及后续版本)
public class SDKClientParam
{
public bool isAutoDetect = true;
public ushort downloadPkgSize; //下载数据包大小 byte
public uint downloadBitrate; //下载速率 bps
public ushort uploadPkgSize; //上传数据包大小 byte
public uint uploadBitrate; //上传速率 bps
public bool isUdp = true;
public uint startBitrate; //比特率
public ulong userId;
public ushort serverPort; //探测Server端口
public string serverIp; //探测Server地址
public string gwMacAddr;
public string gwIp; //网关
}
public class SDKPathItem
{
public string sitePathId;
public string provider;
public string networkType; //0-内网,1-外网
}
//(仅v3.3.1及后续版本)
public class SDKPathItem
{
public string sitePathId;
public string provider;
public string networkType; //0-内网,1-外网
public string netToolServer;
}
public class SDKSiteItem
{
public string displayName { get; set; }
public string enterpriseId { get; set; }
public string enterpriseOfSiteCode { get; set; }
public string locationOfSiteCode { get; set; }
public string sublocationOfSiteCode { get; set; }
public List pathList;
public string currentSitePathId;
}
public class SDKRouteItem
{
public string displayName { get; set; }
public string currentSitePathId { get; set; }
public string locationOfSiteCode { get; set; }
}
public class SDKRouteOptionsResponse
{
public string currentSitePathId;
public List siteList;
}
public class SDKNetToolServerResponse
{
public string netTestServer;
}
public class SDKBwTestResult
{
public SDKDetectResult detectResult;
public SDKDetectResultDetail[] recvDetail;
public SDKDetectResultDetail[] sendDetail;
}
public class SDKDetectResult
{
public uint sendQualityLevel;
public uint recvQualityLevel;
public ulong userId;
public string networkId;
public uint endpointId;
public ulong runningTime;
public string remoteIp;
public bool isAutoTest;
public string serverIp;
public uint serverPort;
}
public class SDKDetectResultDetail
{
public uint setBandwidth;
public uint bandwidth;
public uint lostRate;
public uint jitter;
public uint rtt;
public uint missorder;
public uint pktNum;
}
public class SDKPingResult
{
public string targetIp;
public int interval;
public int totalPktNum;
public double lostRate;
public double avrRtt;
public double minRtt;
public double maxRtt;
public double stdRtt;
public string errorString;
public bool isPingGw;
}
public class SDKDisplay
{
public string remoteIp;
public uint size;
public uint rtt;
public uint sendTTL;
public uint recvTTL;
public uint seq;
}
public class SDKTracerouteResult
{
public string targetIp;
public int maxHop;
public SDKTracertRecoder[][] hopVector;
}
public class SDKTracertRecoder
{
public string hopIp;
public string time;
}
public class SDKPingException
{
public SDKPingError pingError;
}
public enum SDKPingError
{
SDKPingNoError = 0,
SDKPingDnsError = 1,
SDKPingDstError = 2,
SDKPingGetGWError = 3
}
public class SDKBwTestException
{
public uint userId;
public uint errorCode;
}
//(仅v3.3.1及后续版本)
public class SDKBwTestException
{
public uint userId;
//1: server删除超时连接
//2: 终端强制关闭探测
//3: 创建tcpscoket失败
//4: 创建udpscoket失败
//5: 连接server失败
//6: tcp连接断开
public uint errorCode;
public string serverIp;
public uint serverPort;
}
public class SDKStateInfo
{
public bool isSend;
public uint endpointId;
public SDKDetectResultDetail detailResult;
}
//本地录制错误码
public enum SDKLocalRecordCode
{
SDKLocalRecordCode_OK,
SDKLocalRecordCode_NotSupport, // 不支持本地录制
SDKLocalRecordCode_NoInCall, // 未在会议
SDKLocalRecordCode_NoSpace, // 存储空间不足
SDKLocalRecordCode_AlreadyInRecord, // 已经在录制中
SDKLocalRecordCode_NoWritePermission, // 存储目录没有写入权限
SDKLocalRecordCode_Unkonwn
}
//app信息
public class SDKAppInfoManaged
{
public IntPtr hAppMainWnd;
public string appName;
public uint processId;
public BitmapSource thumbnail;
}
//标注状态相关信息
public class SDKAnnotationStateInfo
{
public int callIndex;
public SDKAnnotationState annotationState;
public string url;
public string reason;
public bool isStart;
public string globalReason;
}
//标注状态 public enum SDKAnnotationState
{
ANNOTATION_STATE_IDLE = 0,
ANNOTATION_STATE_OFFERING = 1,
ANNOTATION_STATE_SENDING = 2,
ANNOTATION_STATE_UNKNOWN = 3
}
public class SDKWSConnectionStatus
{
public bool IsConnected ;
/**
*错误码参考SDKWSError
*/
public int ErrorCode ;
public string LocalIP ;
}
public class SDKNotifyRecvedCommandMetaData
{
public int type ;//标注类型
public string cid ;//线ID
}
public class SDKAnnotationVideoStreamInfo
{
public uint participantId; //与会者ID
public ushort width;
public ushort height;
public ushort originalWidth;//标注区域原始宽
public ushort originalHeight;//标注区域原始高
}
public class SDKConfMgmtVoteSignature
{
public enum FaceTypeEnum
{
DefaultMode = 0,
SilenceMode = 1,
Unknown = 10
}
public enum VoteType
{
/// <summary>
/// 投票
/// </summary>
VoteType_Vote = 0,
/// <summary>
/// 评价
/// </summary>
VoteType_Evaluation = 1,
/// <summary>
/// 签到
/// </summary>
VoteType_Signature = 2,
/// <summary>
/// 答题
/// </summary>
VoteType_Answer = 3
}
public string questionnaireId;
public string conferenceNo;
public string conferenceName;
public string meetingId;
public long duration;
public bool endAuto;
public bool supportFace;
public bool supportScan;
public bool faceCheckInSupport;
public bool displayResult;
public FaceTypeEnum faceType = FaceTypeEnum.Unknown;
public int voteType;
public string url;
public string webViewUrl;
public string newWebViewUrl;
[JsonIgnore]
public bool stop = false;
[JsonIgnore]
public DateTime storeTime;
[JsonIgnore]
public long storeDuration;
public string sourceId;
public int sourceType;
public string sourceName;
public string shortUrl;
public long endUtcTime;
}
public class SDKConfMgmtVoteSignatureUser
{
public enum SDKAnswerTypeEnum
{
APP_ANSWER,
PHISICAL_ANSWER,
FACE_CHECK_IN,
}
public string questionnaireId;
public string conferenceNo;
public string meetingId;
public string deviceId;
public string deviceLogo;
public string deviceName { get; set; }
public string deviceNumber;
public string answerType;//APP_ANSWER:签到/答题(软终端) PHYSICAL_ANSWER:答题(硬终端) FACE_CHECK_IN: ⼈脸签到
public int faceType;//0:默认⽅式(实时⼈脸签到) 1:静默扫描会场(扫描图⽚⽅ 式签到)
public bool lifeDetection;// false:失败 true:成功
public string avatar;
/// <summary>
/// 0:Scan 1:FD
/// </summary>
public int tag;
public int type = 0;
public int faceId;
public int userId;
}
public class SDKSignResponse
{
public string status;
public string data;
//public SignResponseData data;
}
public class SDKConfMgmtAnswerPublish
{
public string questionnaireId;
public string conferenceNo;
public string conferenceName;
public string meetingId;
public int voteType;
public string webViewUrl;
public string newWebViewUrl;
}
public class SDKRecordAuthor
{
public bool authorize;
public string recordingUrl;
}
public class SDKRecordStateChangedManaged
{
public string remoteUri;
public SDKRecordingStateManaged state;
public string reason;
public bool isRecorded;
}
public enum SDKRecordingStateManaged
{
RECORDING_STATE_IDLE = 0,
RECORDING_STATE_STARTING = 1,
RECORDING_STATE_ACTING = 2,
RECORDING_STATE_STOPING = 3,
RECORDING_STATE_INACT = 4
}
public class SDKAiCaptionInfo
{
public uint pid; //参会者id
public string src = string.Empty; //源语言文字
public string target = string.Empty; //翻译后的语言文字
public bool isEnd = false; //句子是否结束
public bool isActive = false; //是否是当前能量最高的发言者
public string url = ""; //用户callurl
public string dn = ""; //displayName用户名
public string srcLang = ""; //源文字语言
public string targetLang = ""; //翻译后文字语言
}
初始化 sdk。
bool Startup(Dispatcher dispatcher, INemoSDKCallbacks cb, string logFolder,
int maxRecvVideoStreams = 10, bool useHwCodec = false, bool forceBaseRender = false)
配置 SDK。具体参考 SDKConfig 字段说明
void SetConfig(SDKConfig config)
音频配置(入会前配置)
void SetAudioConfig(SDKAudioConfig audioConfig);
使用操作系统进行音频处理
/// <summary>
/// 使用操作系统进行音频处理
/// </summary>
/// <param name="enable">true 随操作系统,SDK不做干预; false 尝试关闭系统音频增强</param>
void EnableSystemAudioEffect(bool enable);
回声消除
//回声消除配置项
public enum SDKEchoAE
{
CLOSE_AE, //关闭回声消除
AUTO_AE, //自动回声消除
ENHANCE_AE //增强回声消除
}
/// <summary>
/// 回声消除
/// </summary>
/// <param name="echoAE"></param>
void SetEchoAudioEffect(SDKEchoAE echoAE);
背景噪音抑制
//背景噪音抑制配置项
public enum SDKDenoiseAE
{
CLOSE_AE, //关闭抑制
AUTO_AE, //自动抑制
LOW_AE, //低抑制
MID_AE, //中等抑制
HIGH_AE //高级抑制(预留位置)
}
/// <summary>
/// 背景噪音抑制
/// </summary>
/// <param name="denoiseAE"></param>
void SetDenoiseAudioEffect(SDKDenoiseAE denoiseAE);
自动调整麦克风增益
/// <summary>
/// 自动调整麦克风增益
/// </summary>
/// <param name="enable"></param>
void EnableAutoMicrophoneAGC(bool enable);
停止 SDK。退出进程前必须调用这个方法
void Shutdown()
开启并设置故障转储文件(dmp 文件)目录。dmp 文件可用于分析应用程序崩溃
void SetupCrashHandler(string dumpFolder)
第三方账号登录
void LoginExternalAccount(string extID, string extUserId, string displayName)
回调:
// 返回登录状态
void OnLoginState(SDKLoginState state, SDKError error,
SDKLoginInfo info /*only valid when state==LoggedIn*/)
// SDK 错误类型
public enum SDKError
{
NoError,
InvalidExtId,
NetworkError,
ServerError,
NotLoggedIn,
WrongState,
WrongPassword,
InvalidExternalUserId
}
// 登录状态
public enum SDKLoginState
{
LoggedIn,
LoggingIn,
LoggingOut,
LoggedOut
}
// 登录后的用户信息
public class SDKLoginInfo
{
public long id;
public string userNumber; // 呼叫号码,小鱼后台给登陆账号分配的唯一呼叫号码。
public string userName;
public string userId;
// 登录唯一标识
public string securityKey;
// 这个字段表示正在检测网络拓扑,应用层在呼叫前需要等待 OnNetworkTopologyDetectionFinished事件
public bool isDetectingNetworkTopology;
public SDKConfDevInfo confDevInfo;
}
// 参会设备信息。用于订阅 ROSTER信息。
// 这些信息可以通过登录回调 OnLoginState 获得,或者使用云会议API meetingStatus 获得。
public class SDKConfDevInfo
{
public string deviceId;
public int devType;
}
使用 XYLINK 账号登录
void LoginXYLinkAccount(string userName, string password)
回调:同三方登录回调
三方账号认证登录
/// <summary>
/// 三方账号认证登录
/// </summary>
/// <param name="extId">企业ID</param>
/// <param name="extUserId">三方Id</param>
/// <param name="displayName">显示名称</param>
/// <param name="authCode">认证授权码</param>
void LoginAuthExtUserId(string extId, string extUserId, string displayName,string authCode);
三方授权登录
/// <summary>
/// 三方授权登录
/// </summary>
/// <param name="extId">企业ID</param>
/// <param name="authToken">认证授权码</param>
void LoginAuthExtToken(string extId, string authToken);
小鱼账号认证登录
/// <summary>
/// 小鱼账号认证登录
/// </summary>
/// <param name="extId">企业ID</param>
/// <param name="account">账号</param>
/// <param name="password">密码</param>
/// <param name="countryCode">国家码</param>
void LoginAuthXYAccount(string extId, string account, string password, string countryCode="");
退出登录
void Logout()
自动注册SDK用户并登录
参数:
[Obsolete("即将废弃")]
void LoginWithAutoRegister(string extID, string extUserId, string displayName)
刷新token
void RefreshToken();
获取硬件的序列号,用于绑定硬件的方式登录
string GetHardwareSN()
通过绑定硬件方式登录。
void LoginSN(string extId, string sn)
回调:
// 许可证信息。1) 使用序列号方式登录后返回。 2)快要到期前每天返回
void onLicenseInfo(SDKLicenseInfo info)
// 许可证信息。onSDKLicenseInfo 回调接口返回这个信息
// 1)使用序列号的方式登录后会返回一次。
// 2)临近过期的时候,每天会收到一次额外的 onSDKLicenseInfo回调
public class SDKLicenseInfo
{
public string expireDate;// 失效日期, format: yyyy-mm-dd
public int effectiveDays; // 有效天数
}
使用激活码激活指定的硬件
void ActivateSN(string activateCode, string sn)
回调:
// 许可证激活结果
void onLicenseActivationResult(bool succeeded, SDKLicenseInfo result)
// 许可证信息。onSDKLicenseInfo 回调接口返回这个信息
// 1)使用序列号的方式登录后会返回一次。
// 2)临近过期的时候,每天会收到一次额外的 onSDKLicenseInfo回调
public class SDKLicenseInfo
{
public string expireDate;// 失效日期, format: yyyy-mm-dd
public int effectiveDays; // 有效天数
}
发起呼叫
//支持版本:2023之前的所有版本
void MakeCall(string number, string meetingPwd, SDKCallMode mode, string displayName = "",
bool isOpenCamera = true, bool isOpenMic = true);
//支持版本:v3.3.1以上(2023及后续版本)
void MakeCall(string number, string meetingPwd, SDKCallMode mode, string displayName = "",bool isOpenCamera = true, bool isOpenMic = true, string callMeetingId = "");
SDKCallMode:
// 呼叫模式
public enum SDKCallMode
{
// 音视频呼叫模式
AudioVideo = 0,
ContentOnly = 1,
// 语音呼叫模式
AudioOnly = 4,
// 监会模式(隐身入会)
MonitorHideMode = 5
}
呼叫状态回调方法:
void OnCallState(SDKCallStateInfo callStateInfo)
// 呼叫状态信息
public class SDKCallStateInfo
{
public SDKCallState callState;
public SDKError sdkError;
// 退出会议的原因。当 sdkError==NoError的时候,可检测这个字段。
public string disconnectReason = "";
// 用于被叫时,返回会议室号码.呼叫接通时这个字段有效
public string meetingNumer = "";
// 当前呼叫的唯一标识
public int callIndex;
// 远端是否为语音模式
public bool remoteAudioOnlyMode = false;
}
更改呼叫模式。点对点视频模式呼叫接通前,主叫端可通过此方法切换到语音模式
void ChangeCallMode(int callIndex, SDKCallMode callMode, bool audioMute = false,
bool videoMute = false)
SDKCallMode:
// 呼叫模式
public enum SDKCallMode
{
// 音视频呼叫模式
AudioVideo = 0,
ContentOnly = 1,
// 语音呼叫模式
AudioOnly = 4,
// 监会模式(隐身入会)
MonitorHideMode = 5
}
结束全体会议
bool EndMeeting(string meetingId, string conferenceNumber)
接听当前被叫。注意点:如果正在通话中,将自动切换到新的呼叫中
void AcceptCall(SDKCallMode mode = SDKCallMode.AudioVideo)
SDKCallMode:
// 呼叫模式
public enum SDKCallMode
{
// 音视频呼叫模式
AudioVideo = 0,
ContentOnly = 1,
// 语音呼叫模式
AudioOnly = 4,
// 监会模式(隐身入会)
MonitorHideMode = 5
}
拒绝来电。不论是不是在通话中,需要调用这个接口来拒绝来电
void RejectCall()
会议中添加与会者
void AddCallee(string number)
挂断
void Hangup(int callIndex = -1)
修改云会议室密码。注意:这个调用没有回调结果
void ChangeMeetingroomPassword(SDKMeetingRoomInfo info
// 和登录账号绑定的云会议室的信息
public class SDKMeetingRoomInfo
{
public string meetingRoomNumber;
public string roomPassword;
}
回调方法:
// 这个接口返回修改云会议室密码的结果
void OnChangeMeetingroomPasswordResult(bool succeeded)
获取呼叫历史记录,通过 onCallHistoryInfo 回调返回
void GetCallHistoryInfo()
回调方法:
void onCallHistoryInfo(List<SDKCallHistoryInfo> historyInfos)
SDKCallHistoryInfo
public class SDKCallHistoryInfo
{
public string id { get; set; }
public string numberType { get; set; }
public string number { get; set; }
public long callTime { get; set; }
public string displayName { get; set; }
public string avatar { get; set; }
public int userProfileId { get; set; }
public SDKCallType callType { get; set; }
public int deviceType { get; set; }
}
获取远端音量指示器
SDKAudioMeterInfo[] GetRemoteAudioPeakMeter();
// 与会者音量信息
public class SDKAudioMeterInfo
{
public UInt32 participantId; // 与会者id
public UInt32 energy; // 声音能量值(0~127)
}
获取视频控件
FrameworkElement GetVideoElement(string videoSourceId)
FrameworkElement GetVideoElement4Camera(SDKCameraOrdinal ordinal)
// 视频输入设备序号。第一个用于第一路视频流,第二个用于双流时的第二路(内容共享)
public enum SDKCameraOrdinal
{
None, First, Second
}
// 设置视频控件背景色。当视频尺寸宽高比不等于控件宽高比时,填充此色
void SetVideoBkColor(byte r, byte g, byte b)
多个发言者标记使能选项
void EnableNeedSpeakers(bool enabled)
设置活动内容
[Obsolete("即将废弃")]
void SetActiveContent(bool isLocal)
在 1+N【一个大画面+N 个小画面】 自动布局时,用来指定大画面 , 如果不指定,SDK 层自动指定当前讲话者为大画面
void FocusVideoStream(uint participantId)
开启自定义布局
void EnableCustomLayout(bool enabled)
请流设置自定义布局
void SetCustomLayout(SDKCustomLayoutInfo layoutInfo)
// 自定义布局信息 【自定义布局】
public class SDKCustomLayoutInfo
{ //自定义布局模式
public SDKLayoutMode layoutMode;
public SDKCustomLayoutElement[] layoutElements;
};
// 视频布局模式。这些是自动布局模式。SDK层自动实现多人视频的布局安排。
public enum SDKLayoutMode
{
Layout_1_Plus_N, // 1个大画面 + N个小画面
Layout_M_by_N, // 对称模式 M X N 个小画面
Layout_Multi720P
}
// 自定义布局元素信息 【自定义布局】
public class SDKCustomLayoutElement
{
public UInt32 participantId; /
public UInt32 width;
public UInt32 height;
public SDKLayoutPriority priority;
public SDKVideoQuality quality;
};
// 布局优先级 【自定义布局】
public enum SDKLayoutPriority
{
LayoutPriorityHigh,
LayoutPriorityNormal,
LayoutPriorityLow,
LayoutPriorityUnknown
}
// 请求视频质量 【自定义布局】
public enum SDKVideoQuality
{
VideoQualityHigh,
VideoQualityNormal,
VideoQualityBase,
VideoQualityUnknown
}
订阅 ROSTER【与会者】信息。当入会设备大于 20 方时,可以订阅指定设备的与会者信息。这些信息可以超过 20 方,默认情况下,SDK 层最多返回最近讲话的 20 方与会者信息
//2.29
void SubscribeRoster(SDKConfDevInfo[] devList);
//v3.3及以上版本
//uriList 与会者uri集合
void SubscribeRoster(List<string> uriList);
请求会中指定 Roster 信息,length 支持最大 20 方,当超过 20 时候按照 20 方请求(可用于分页加载)
void RequestRoster(int startIndex, int length)
是否订阅出入会通知
void SubscribeInOutReminder(bool isSubscribe)
获取屏幕列表
SDKMonitorInfo[] GetMonitorList()
// 显示器信息,用于桌面共享
public class SDKMonitorInfo
{
public string monitorName;
public System.Drawing.Rectangle monitorRect;
}
获取媒体设备列表
SDKMediaDevInfo[] GetDevList(SDKMediaDevType type)
// 音视频设备类型
public enum SDKMediaDevType
{
Camera = 0,
Microphone = 1,
Speaker = 2,
Unknown = 255
}
选择一个设备
void ChooseDev(SDKMediaDevType type, SDKCameraOrdinal ordinal, string devId)
//视频输入设备序号。第一个用于第一路视频流,第二个用于双流时的第二路(内容共享)
public enum SDKCameraOrdinal
{
None, First, Second
}
// 音视频设备类型
public enum SDKMediaDevType
{
Camera = 0,
Microphone = 1,
Speaker = 2,
Unknown = 255
控制远端摄像头转动
public enum SDKFECCCommand
{
// 以下各命令中, TURN表示连续转动, STEP表示步进。
FECC_TURN_LEFT = 0, // 连续左转
FECC_STEP_LEFT = 1, // 向左步进
FECC_TURN_RIGHT = 2, // 连续右转
FECC_STEP_RIGHT = 3, // 向右步进
FECC_TURN_STOP = 4, // 水平转动停止。停止 FECC_TURN_LEFT
TILT_CAMERA_TURN_UP = 5, // 向上抬起
TILT_CAMERA_STEP_UP = 6,
TILT_CAMERA_TURN_DOWN = 7, // 向下低头
TILT_CAMERA_STEP_DOWN = 8,
TILT_CAMERA_TURN_STOP = 9,
FECC_ZOOM_IN = 10, // 放大
FECC_ZOOM_OUT = 11, // 缩小
FECC_STEP_ZOOM_IN = 12,
FECC_STEP_ZOOM_OUT = 13,
FECC_ZOOM_TURN_STOP = 14,
FECC_UNKNOWN = 15
}
void SendFECCCommand(uint participantId, SDKFECCCommand cmd, int step);
摄像头本地镜像设置
void SetLocalPreviewFlipping(SDKCameraOrdinal ordinal, bool flipping)
旋转视频采集画面(顺时针)
void SetVideoCaptureRotation(SDKCameraOrdinal ordinal, SDKRotationType rotation);
是否禁用视频流
void SetVideoMute(bool bMute)
开启摄像头
void StartCamera(SDKCameraOrdinal ordinal, bool useDshow = false, bool rgbFormat = false,
int skipFrameCnt = 0)
// 视频输入设备序号。第一个用于第一路视频流,第二个用于双流时的第二路(内容共享)
public enum SDKCameraOrdinal
{
None, First, Second
}
关闭摄像头
void StopCamera(SDKCameraOrdinal ordinal, bool shutDown = false)
设置扬声器音量
void SetSpeakerVolume(int volume)
是否关闭扬声器
void SetSpeakerMute(bool bMute)
是否关闭麦克风
void SetMicMute(bool bMute)
获取扬声器音量
int GetSpeakerVolume()
获取本地麦克风音量 ,范围:[0,100]
int GetLocalMicVolume()
打开麦克风
void StartAudioCapture()
关闭麦克风
void StopAudioCapture()
打开扬声器
void StartAudioRenderer()
关闭扬声器
void StopAudioRenderer()
获取扬声器指示器音量
// 返回值范围 [0,100]
int GetSpeakerEndPointVolume()
设置扬声器指示器音量
void SetSpeakerEndPointVolume(int value)
获取麦克风指示器音量
// 返回值范围 [0,100]
int GetMicEndPointVolume()
设置麦克风指示器音量
void SetMicEndPointVolume(int value)
【共享音视频流功能】使用外部媒体输入,功能一与功能二互斥,前两参数为 true 时后两参数必为 false,反之亦然; 启用此功能后使用接口:InputExternalVideoData 与 InputExternalAudioData 进行内容输入
void EnableExternalMedia(bool externalPeopleVideo, bool externalPeopleAudio,
bool externalContentVideo,bool externalContentAudio)
【共享音视频流功能】输入外部视频数据
bool InputExternalVideoData(SDKVideoData videoData
// 视频数据内容
public class SDKVideoData
{
// 值为 true 代表使用外部内容输入,否则使用外部设备输入
public bool isContent;
// 宽度
public UInt32 width;
// 高度
public UInt32 height;
// 行扫字节数
public UInt32 stride;
//视频格式
public SDKVideoType format;
//相同时钟产生的时间戳(ms)
public UInt64 timeStamp; // in milliseconds. must use the same reference-clock as the audio data
//数据指针
public IntPtr dataPtr;
}
【共享音视频流功能】输入外部音频数据
bool InputExternalAudioData(SDKAudioData audioData)
// 音频数据内容
public class SDKAudioData
{
// 值为 true 代表使用外部内容输入,否则使用外部设备输入
public bool isContent;
// 音频格式
public SDKAudioSampleType formatType;
// 每秒采样数
public UInt32 samplesPerSec;
//通道数
public UInt32 numChannels;
// 每样本长度(位)
public UInt32 bitsPerSample;
// 每样本容器长度?(位)
public UInt32 containerSize; // container size per sample in bits
//相同时钟产生的时间戳(ms)
// in milliseconds. must use the same reference-clock as the video data
public UInt64 timeStamp;
// 数据指针
public IntPtr dataPtr;
// 数据长度
public UInt32 dataLen;
}
旁路音频控制开关
void setMicDataByAEEnabled(bool enabled)
音频诊断接口,开启音频数据 dumper
void EnableAEDumper(string dumpFolder, uint capacityInMB)
音频诊断接口,关闭音频数据 dumper
void DisableAEDumper()
标记当前 dumper 数据
void MarkAEDumper();
会议中获取本地一帧图片数据
byte[] GetLocalVideoData()
会中设置最大发送分辨率
void SetMaxSendVideoResolution(SDKMaxVideoResolution sDKMaxVideoResolution)
使能麦克风检测
void EnableListenTest(SDKAudioEndPointOrdinal ordinal, bool bListen)
public enum SDKAudioEndPointOrdinal
{
None = 0,
First = 1,
Second = 2
}
开始播放音频(可用于扬声器检测)
void StartPlayRing(string wavFile, int loopTimes)
停止播放音频
void StopPlayRing()
获取扬声器检测音量值
float GetRenderPeakMeter()
获取麦克风检测音量值
float GetCapturePeakMeter(SDKAudioEndPointOrdinal ordinal)
public enum SDKAudioEndPointOrdinal
{
None = 0,
First = 1,
Second = 2
}
如果你被管理员禁言了,调用这个方法请求发言
void SendSpeakingRequest()
通知管理员发言结束
void SendSpeakingEnd()
取消发言请求
void CancelSpeakingRequest()
签到确认
void ConfirmSignIn(SDKConfMgmtVoteSignature signature)
获取签到 投票 答题所需互动的URL
string GetVoteInteractUrl(string webViewUrl, string id,
SDKConfMgmtVoteSignature.VoteType voteType = SDKConfMgmtVoteSignature.VoteType.VoteType_Answer,
long time = 0L, string locale = "zh-CN")
获取会控页面Url
//v2.29
string GetMeetingHostUrl(string meetingNumber, bool isMeetingOwner = false, string local = "zh-CN")
//v3.3及以上版本
string GetMeetingManagerUrl(string meetingNumber, bool isMeetingOwner = false, string local = "zh-CN");
开始白板分享
void StartWhiteboard(int callIndex, string data)
停止白板分享
void StopWhiteboard(int callIndex)
开始绘制
void StartDrawing(string color, int width, List<System.Windows.Point> pointList)
继续绘制
void ContinueDrawing(List<System.Windows.Point> pointList, bool isComplete)
清除白板内容
void ClearWhiteboard()
开启内容共享
void StartContentSharing(bool withDesktopAudio)
停止内容共享
void StopContentSharing()
开启媒体文件共享
void StartMediaFileSharing(string filePath, bool enableAnnotation = true)
停止媒体文件共享
void StopMediaFileSharing()
媒体文件初始化设置
void MediaFilePrepare(string fileName, float volume)
开始分享
void MediaFileStart()
暂停分享
void MediaFilePause()
停止分享
void MediaFileStop()
设置指定时间
void MediaFileSeek(Int64 position)
设置分享时的媒体音量
void MediaFileAdjustVolume(float volume)
释放媒体文件共享资源
void MediaFileRelease()
获取媒体显示控件
FrameworkElement GetVideoElement4MediaFile()
获取媒体文件信息
参数:
SDKMediaFileInfo GetMediaFileInfo(string fileName)
选择共享的桌面
void SelectMonitorToShare(string monitorName)
开始抓屏
void StartScreenCapture()
停止抓屏
void StopScreenCapture()
暂停抓屏
void PauseScreenCapture()
获取应用列表信息
SDKAppInfoManaged[] GetTopLevelAppList()
选择要分享的appwindow
bool SelectAppWindowToShare(IntPtr hAppMain)
是否忽略遮盖的Window
void AppSharingIgnoreCoveredWindow(IntPtr hCoverdWnd, bool bIgnore)
获取窗口可见区域
void GetAppWindowVisibleArea(IntPtr hAppMain, ref System.Drawing.Rectangle rect)
获取top窗口
IntPtr GetAppTopmostWindow(IntPtr hAppMain)
获取正在分享的window句柄
IntPtr GetAppSharingWnd()
设置不忽略的句柄
void SetNotIgnoreCaptureWnd(IntPtr hwnd)
void SetIgnoreCaptureWnd(IntPtr hwnd)
设置能否区域分享
void EnableRegionalCapture(bool enable
更新分享区域
void UpdateRegionalCaptureArea(System.Drawing.Rectangle rc
设置是否使用流畅模式
void EnableFluentMode(bool enable)
开启批注
void StartAnnotation(int callIndex)
结束标注
void StopAnnotation(int callIndex)
更新批注信息
void UpdateAnnotation(SDKAnnotationStateInfo info, bool mIsOpenBySelf)
开始绘制批注
void StartAnnotationDrawing(string color, int width, List<System.Windows.Point> pointList, string cid)
继续绘制批注
void ContinueAnnotationDrawing(List<System.Windows.Point> pointList, bool isComplete, string cid)
接收到对应标注后,通知远端
void NotifyAnnotationRecved(string cid)
开始标注前设置是否需要清除所有标注
void SetStartAnnotationWithClear(bool clear)
清除所有标注
void ClearAnnotation()
开启本地录制
void StartLocalRecord(string bizId, SDKLocalRecordType type, SDKLocalRecordMode mode,
SDKVideoResolution res, bool toUpload,
SDKLocalRecordBusinessInfo rbInfo)
开启本地录制
void StopLocalRecord(string bizId)
更新本地录制布局
void UpdateLocalRecordLayout(SDKRecordLayout layout)
设置本地录制的文件存储路径和资源文件路径
void SetRecordingsFilePath(String localStorePath, String localResourcePath)
开始远端录制
void RequestStartRecording(int callIndex, string remoteUri)
暂停云端录制
void RequestPauseRecording(int callIndex, string remoteUri)
恢复云端录制
void RequestResumeRecoring(int callIndex, string remoteUri)
停止云端录制
void RequestStopRecording(int callIndex, string remoteUri)
查询录制权限
void CheckRecordAuth(String conferenceNo)
设置路由线路ID
void SetRouteSelectedOption(string sitePathId)
设置默认路由
void SetDefaultRouteOption()
探测单个网络线路
void NetTestStart(SDKClientParam clientParam)
/// <summary>
/// 探测所有网络线路
/// </summary>
void NetTestAllStart();
停止网络测试
void NetTestStop()
专有云内网直播网络探测
/// <summary>
/// 专有云内网直播网络探测
/// </summary>
/// <param name="meetingNum">会议号</param>
/// <param name="liveld">直播liveId</param>
///// <param name="confNum">直播会议号</param>
/// <param name="netProtocol">http-flv和http-hls采用http还是https协议,0-http(默认值),1-https</param>
void IntraWatchDetect(string meetingNum, string liveld, /*string confNum, */int netProtocol = 0);
获取路由线路数据
void GetRouteOptions()
验证测试SOCKS5代理
void ValidateSocksProxy(string ip, int port, string username, string pwd)
设置SOCKS5代理
void SetSOCKS5ProxyParm(string ip, int port, string username, string pwd)
获取呼叫中媒体和网络的统计信息。不要调用太频繁,建议 5 秒一次
SDKStatistics GetStatistics()
设置能否获取多个本地视频窗口
void SetDuplicateRenderAlwaysShow(bool alwaysShow
获取本地视频窗口
FrameworkElement GetVideoElement4LocalDuplicate()
获取本地视频预览窗口
FrameworkElement GetVideoElement4LocalDuplicatePreview()
设置虚拟背景模式
enum SDKVirtualBgMode
{
VirtualBgMode_None = 0, /* 无 */
VirtualBgMode_BgBlur, /* 背景虚化 */
VirtualBgMode_BgImage /* 虚拟背景 */
};
void SetVirtualBgMode(SDKVirtualBackgroundMode mode)
设置虚拟背景图片路径
void SetVirtualBgImg(string path)
设置虚美颜或者滤镜
void SetVideoEffect(string effectType, int effectLevel)
获取该用户之前设置的虚拟背景及美颜状态
string GetUserVirBgBeautyFilterInfo(string userid)
添加或者更新该用户设置的虚拟背景及美颜状态
bool UpdateOrAddUserVirBgBeautyFilterInfo(string userid, string info)
获取用户添加的自定义图片数据
class SDKUserUploadImgInfo
{
//用户ID
public string UserId { get; set; } ;
//图片Guid信息
public string Guid { get; set; } ;
//图片路径
public string Path { get; set; } ;
}
List<SDKUserUploadImgInfo> GetUserUploadVirBgImgs(string userid)
添加自定义图片信息
bool AddVirBgImgInfo(string userid, string imgPath, string imgGuid)
删除自定义图片信息
bool DelUserVirBgImgInfo(string userid, string imgGuid)
获取GPU信息,通过OnGPUInfoResult回调结果
void GetGPUInfo()
设置可用的GPU数据
// gpus为空,则使用CPU渲染
// gpus不为空,优先使用独显
void SetGpusEnable(string[] gpus)
上传日志/反馈
void UploadLog(string comments)
设置H323硬件设备的的键盘值
/// <summary>
/// 设置硬件设备的keycode //H323
/// </summary>
/// <param name="streams">当前视频流</param>
/// <param name="keycode">数字键盘值</param>
void SendDialDTMF(SDKVideoStreamInfo[] streams, string keycode);
本地输入的语言
void SetAiLanguage(string language);
使用网关时,获取H5页面需要调用的Javascript
object GetJavascriptObject();