版本 V6.0 系列

如需帮助,请进入 SDK集成帮助

版本号:6.8.4 更新日期:2016.11.07
[新增功能]

更新 JSM 版本3.70

增加加入会议中继服务功能

集成接收端 AGC Gain 控制

增加通话过程延时抖动带宽数据上报

增加查询呼叫中心等待人数接口

优化终端和接入服务器连接,优化登录的流程,登录接口需响应修改

根据性能自动调整录像帧率

添加 iOS 对播放设备运行时出错的检查

支持呼叫发送 DTMF

增加设置用户状态信息的接口

增加创建会议失败原因信息


[问题修复]

iOS硬件H264避免后台运行

修改在 Login 时传入 AppKey 参数

呼叫中增加媒体类型,避免使用压缩 SDP 时造成服务判断错误

解决win8/win10上采集office2010窗口闪烁的问题

修改清空配置可能不生效的问题

修改等待较长时间接听通话后收不到涂鸦数据的问题

修改协商时可能出现的问题

修改可能出现的死锁问题

修改一些可能导致异常的问题

解决后台休眠时可能出现异常的问题

解决停止录制时没有立刻调用停止录制的接口的问题

解决应用层路由连通性问题

版本号:6.8.2 更新日期:2016.08.03
[新增功能]

更新应用层路由版本

增加登录之后重连的通知

增加通话设置 ARS 参数的功能

增加会议本地静音接口

支持应用层路由

优化登录过程,缩短登录时间

优化日志信息


[问题修复]

修改通话静音实现错误

修改统计信息上传中内存泄漏的问题

解决音频流没有开启时播放视频文件失败的问题

版本号:6.8.1 更新日期:2016.04.29
[新增功能]

增加带宽检测功能

增加直接创建会议并加入的功能,通过该接口提供音视频通道的能力

优化 Android 编译参数,减少不需要导出的符号

Android 5.0 以上的三星、小米、华为、索尼默认使用 OS AEC

增加 avi 文件恢复功能

文档共享本地转换支持 PPT 格式

增加批量查询在线状态的功能

增加 Android 可配置按键接听的来电界面

iOS 录像使用硬件编码

增加渲染图像截图功能

支持 RUDP 协商

增加会议查询失败的原因:会议不存在

支持动态加载 Android 库文件

增加 Android X86 库文件


[问题修复]

修复 Android 镜头开启出错后关闭不了的问题

修复 Android 镜头开启出错后还有可能关闭不了的问题

解决 iOS 硬件编码格式问题

修复预览框的镜像无法强制取消的问题

解决会议大容量测试中出现的问题

修改 Android 录制涂鸦绿屏问题

修改 iOS 通话等界面显示在 Present 末端 ViewController

修复小米 4C 没有声音的问题

修改文档共享在 Load 成功之后直接下载原图

修改文档共享可能出现的异常

修改 Windows 会议增加保存设备选择的配置

会议增加网络状态日志信息

修改会议加入失败之后没有释放会议对象的问题

改进会议界面提示

版本号:6.8.0 更新日期:2015.12.25
[新增功能]

增加 Windows QT登录和呼叫 Sample

支持 Login 之后立刻 Logout

增加多方通话断网提示

分拆通话、会议、即时消息的样例工程

增加本地多方语音通话功能

增加设置和读取多个属性的接口

更新会议功能,增加文字聊天等

添加涂鸦开始和结束的类型

会议添加发送数据的接口

修改通话和会议的 ID 范围,可以区分不同业务

增加录制 MP4 文件类型

添加涂鸦接口支持增加点的间隔信息

增加预约会议接口

推荐添加参数 iVideoLevel,设置视频质量

增加会议昵称设置接口

移动平台 H264 时强制关闭 RPSI

更新 NACK 允许 RTT 为800,并设置 RTT 的初始值

支持 iOS 的上下翻转动画

允许外部集成 H264编解码

改善 PC 版本 AEC 效果

支持会议混屏 推送到 CDN

Windows 增加通话涂鸦功能

iOS 和 Android 增加会议涂鸦功能

iOS 和 Android 集成服务器发起呼叫功能


[问题修复]

修改通话静音实现错误

改进 P2P 单通导致前10秒没声音的问题

修改默认不支持高级渲染模式,避免安装 DirectX Runtime

iOS Meeting 在后台,来电界面不显示

修改 iOS 涂鸦图片设置不正确的问题

iOS 多方通话修改小窗口按钮不显示的问题

Android 多方通话修改小窗口按钮不显示的问题

iOS 修改通话界面弹出方式

QT 登录过程中不能修改用户名密码服务器

实现会议中不在接受邀请

修复 Windows 登录后回到登录界面服务器地址不对应的问题

修改 Windows 语音通话的时候来视频通话时没有本地图像的问题

解决文件传输定时器异常的问题

修改 AndroidAPK 运行错误的问题

增加 HTTP 接口参数值判断

修改默认 NACK 最大值为800,更好适应丢包网络

修改提交模块可以在初始化之后提交

精简无效的接口

修改文件传输,增加临时文件避免失败导致文件损坏

修改登录信息查询接口,提供独立仅查询登录状态接口

兼容老版本 IM 文件类型定义

分离获取屏幕共享和摄像头设备的接口

修改 iOSConference 全屏显示时成员离开界面相关问题

修改 iOSMultiCall 未注册 Push 参数的问题

通话悬浮窗口优化

iOS 修改手机通话中可以重拨的问题

Android 修改重播键显示不正确的问题

Android 解决找不到资源造成 Crash 的问题

Android 修改常规通话的时候提示不正确的问题

Android 多方通话修改在后台时收到第二路来电无法弹出来电界面的问题

Android 修改 Conference 显示他人离开会议后显示该人全屏的画面不会消失的问题

解决不同应用在同一设备登录同一帐号不会提示离线的问题

调用 destroy 没有重置状态的问题

线程化初始化Windows 音频设备

修复 Window 复位DX 后没有立即渲染的问题

对多次开启屏幕抓屏做保护

解决先释放 Audio,再释放 Video 时候的崩溃问题

添加 Android 音频参数检测保护

修改通话设置摄像头接口参数为 NULL 导致的异常

修复多平台翻转引入的远端镜头问题

修改会议的一些错误

修复 Windows 无法下载文件的问题

修复 Windows 断网的情况下通话界面一直存在的问题

修复 Windows 取消呼叫时crash的问题

版本号:6.7.1 更新日期:2015.11.25
[新增功能]

会议增加 Android,iOS 界面控件实现

增加呼叫中媒体加密设置接口


[问题修复]

解决 IM 消息中 Account 信息不一致的问题

版本号:6.7.1-rc6 更新日期:2015.11.20
[新增功能]

会议实现邀请时发送所有与会者

会议添加会议取消原因并记录邀请人员

增加涂鸦画布平移功能

iOS 涂鸦背景图片设置和开始接口分离

增加支持 iOS x86_64

增加 GCM 支持

增加涂鸦 Android 支持上下平移


[问题修复]

修改会议相关实现

支持是否自适应采集图像调整录制编码尺寸

修改 MVD 解决通话中修改媒体参数失败导致远端图像无法显示的问题

集成 iOS AAC 编解码

实现外部解码视频流接口 Mvd_SetDecodeByPass

会议支持视图一致模式

修复拒绝邀请不成功

修复 iOS9.0 以上系统在暗处闪烁的问题

解决 Android 渲染快速切换死机

解决涂鸦在某些 Android 手机异常的问题

优化涂鸦路径显示平滑

解决涂鸦在翻页等异常情况处理问题

修改涂鸦加载多张图片内存问题

修改 iOS bundle 配置问题

版本号:6.7.1-rc3 更新日期:2015.11.06
[新增功能]

Android 使用 Studio

增加涂鸦过程中同步背景图片的功能

iOS 界面接口修改为 Objective-C

涂鸦功能 iOS Android

增加登录鉴权通知的超时处理,避免一直处于登录状态

修改静态库


[问题修复]

增加服务器地址信息日志

增加 RSA 登录时定时器,避免一致等待

修改涂鸦信息处理错误

修改通话中媒体接收状态保存错误

修改 iOS MtcApi 接口定义声明问题

增加日志提交间隔时间判断,避免频繁提交

改进 Android 语音噪音的问题

增加 UID 合法性判断

版本号:6.7.1-rc1 更新日期:2015.10.21
[新增功能]

SDK 自动获取 Android、IOS 设备信息,查询对方登录信息

在结束通话接口中增加具体原因值

iOS 上默认关闭 ANR

opus 使用 16KHz 采样率

增加设置 NACK low/high rtt 阀值的接口

增加设置 NACK RTT 范围的接口

增加更多帐号相关错误日志信息

会议去掉密码功能

Android IOS 添加通话悬浮窗

Android 获取镜头时添加异常捕获处理

消息接口参数增加用户数据和显示名称

统计信息中增加采集分辨率

增加通话过程中发送数据功能

增加设置用户属性接口

集成 WindowsHttp 接口


[问题修复]

修改通话统计信息中 CallId 不正确的问题

修改 Windows DeviceId 获取内容,增加 MAC 地址避免重复

修改 JSON 生成字符串错误类型的问题

取消默认定时发送关键帧的功能

修改 MDM 码率节省模式

改进 H264 图像质量

增加对 MMP 配置容错处理

修改 RTT 统计不准确的问题

默认码率控制修改为中等

修改日志上传增加 AppKey

修改统计信息没有上传的问题

修复 Xcode7 打包出现黑边的问题

解决 rtcp mux 设置在某些情况下没有生效的问题

解决 Android 噪声,声音小的问题

修复旋转角度小于0或大于360度出错

修复镜头 FPS 大于60时的死循环

版本号:6.7-rc7 更新日期:2015.9.23
[新增功能]

增加 Windows C 接口头文件和库文件

支持 AccessEntry 的 pt 参数

提供 iOS Android 通话界面实现

增加公开密钥验证登录的功能

增加下载 MDM 功能

增加媒体引擎参数有效性检查

增加更详细的帐号和登录错误信息

增加通话中登出的处理

增加发起通话时携带用户自定义信息

提供 Android 和 iOS 通话功能界面封装包

增加 JNI 接口非法值检查

增加 Android 和 iOS 放大镜功能和配置接口


[问题修复]

修改 Mtc_CallSetSpkVol 接口编译问题

增加呼叫的更详细失败信息

修改媒体引擎码率控制问题

修改 RSA 模式下接口调用错误导致登录可能失败的问题

修改 RSA 模式授权请求使用 ID

修改 iOS Push 铃声不正确的问题

修改 iOS 网络未连接发起呼叫的提示错误

修改 iOS 通话断网10秒就挂断的问题

修改通话未接通时前后台切换导致通话结束的问题

修改 iOS 来电时获取不正确 ID 的问题

修改 iOS 登录 ID 类型设置导致第二次不能登录的问题

修改多路径选择,降低丢包权重避免路径频繁切换

修改设定显示名称后加载历史记录不能关联正确联系人的问题

修复黑屏会有噪点的问题

不启用放大镜功能时采用640*480分辨率,以改善发热问题

版本号:6.6.4-rc1 更新日期:2015.8.27
[新增功能]

自动下载 MDM 配置

增加发布和查询用户属性接口


[问题修复]

发起呼叫使用 URI 避免号码和用户名混淆的问题

修改日志文件数量处理不正确的问题

增加登录失败更详细信息

修改 MDM 下载问题,更新版本号

修改增加错误情况处理

版本号:6.6.3 更新日期:2015.8.23
[新增功能]

增加 IM 文件传输接口


[问题修复]

修改界面异常的问题

更新会议版本

更新媒体引擎版本 3.55

版本号:6.6.2 更新日期:2015.8.3
[新增功能]

SDK 精简


[问题修复]

优化界面代码

版本号:6.6 更新日期:2015.7.10
[新增功能]

增加会议功能


版本号:6.6 更新日期:2015.6.15
[新增功能]

增加呼叫结束的状态通知

增加呼叫发送接收状态设置接口和通知

默认不使用 SRTP


[问题修复]

修复通话统计没有获取媒体报告的问题

解决呼叫有时直接返回失败的问题

修改拼写错误

默认打开音频 ARS 功能

修改 RTX 协商没有生效的问题

版本号:6.6 更新日期:2015.6.1
[新增功能]

更新开户、登录和呼叫的底层集成接口(呼叫转移、呼叫保持、语音视频切换功能未支持)


[问题修复]

更新 ARC 增强连接稳定和可靠性

版本号:6.5.1 更新日期:2015.5.4
[问题修复]

解决通话在连接时,主叫挂断,被叫无法挂断的问题

版本号:6.5 更新日期:2015.3.30
[新增功能]

增加呼叫转移功能

增加呼叫保持功能

增加呼叫等待功能

增加语音和视频通话互相切换的功能

增加截屏功能

增加放大镜功能(安卓暂时还没有此功能)

增加音视频录制功能

增加统计功能的页面

iOS 支持64位


[问题修复]

解决删除增加视频后放大镜不能放大的问题

解决呼叫等待时两路通话切换放大镜的问题

解决呼叫等待时处理两路通话音视频录制的问题

解决 hold 后不能添加视频的问题

解决 iOS 模拟器 -all_load 编译问题

1. Sample 中 OpenSSL 相关文件的作用是什么?

Sample 使用 OpenSSL 相关文件是为了在 Sample 中测试 RSA 鉴权模式。客户不需要将 OpenSSL 相关文件导入到客户自己的 App 中。OpenSSL 相关文件包括:


iOS 平台:


include/openssl 下所有头文件

lib/ios/libcrypto.a

lib/ios/libssl.a


Android 平台:


libs/bcprov-jdk15on-152.jar


Windows 平台:


signer 目录中所有文件及工程

bin/signer.dll

1. SDK 是否支持 64 位平台?
SDK 支持 iOS 64 位平台,不支持 iOS 64 位模拟器。 SDK 不支持 Android 64 位平台。
2. 集成 iOS SDK 之后,在通话开始或者关闭出现异常,堆栈信息如下,可能是什么问题?

可能的原因是客户集成 SDK 的 App 同时连接了 JusTalk Cloud SDK 的库文件和其他第三 ⽅方的音视频引擎库文件,例如 腾讯云音视频SDK 等。这些 SDK 中都有相同的公共函数, 同时连接导致运行时错误。公共函数例如是语音或者视频的编解码,图像处理函数等。 集成 SDK 不能同时连接第三发音视频 SDK ⽂文件。

3. Android 平台对代码进行混淆的时候,需要保护哪些?
-keep class com.justalk.cloud.** { *; } -keep interface com.justalk.cloud.** { *; } -keep class com.justalk.ui.MtcNotify { *; }
4. 通话中对方开关摄像头会收到什么事件通知?

会收到 MtcCallVideoReceiveStatusChangedNotification 事件通知,里面 MtcCallVideoStatusKey 的值,定义分别为:

/**< @brief Transmission is normal, 'nrml'. */

EN_MTC_CALL_TRANSMISSION_NORMAL = 0x6E726D6C,

/**< @brief Transmission is paused for camera is off, 'coff'. */

EN_MTC_CALL_TRANSMISSION_CAMOFF = 0x636F6666,

/**< @brief Transmission is paused, 'pasd'. */

EN_MTC_CALL_TRANSMISSION_PAUSE = 0x70617364,

/**< @brief Transmission is pause for QoS reason, 'pqos'. */

EN_MTC_CALL_TRANSMISSION_PAUSE4QOS = 0x70716F73,

1. 调用登录接口返回值为 0 是否表明已登录成功?应该如何判断登录成功?

登录接口返回 0 仅表示接口调⽤用成功,不表明登录已经成功。只有收到登录成功的事件通 知才表明登录成功。


iOS 平台:


MtcLoginOkNotification 事件通知


Android 平台:


MtcApi.MtcLoginOkNotification 事件广播


Windows 平台:


MtcApi.MtcLoginOkNotification 事件

2. MtcLogoutOkNotification 和 MtcLogoutedNotification 有什么区别?

MtcLogoutOkNotification 表示主动调用登出接口后已经登出的事件通知

MtcLogoutedNotification 表示没有调⽤用登录接口,但是收到已登出的事件。一般是当 前设备登录的帐号在其他设备上登录,导致当前设备被踢下线的时候。

现在 JusTalk Cloud 一个帐号只能在一个设备上登录。在第二个设备上登录成功之后,服 务器将通知前一个设备帐号下线。此时 UI 将收到 MtcLogoutedNotification 通知。
3. 调用登录接口 MtcApi.login 返回 1 是什么原因?
返回 1 表示该接口重复调用。应用启动的时候只需要调用一次登录接口,然后等待登录成 功或者失败的事件通知即可,不需要重复调用登录接口。登录接口返回 0 或者 1 既不代表 登录成功,也不代表登录失败。 获取登录状态可以通过调用 Mtc_CliGetState 接口。
4. 在长连接重连的过程中,我调用API的 Login 方法,长连接是否立马重连?

现在 UI 如果要影响长连接的行为有两个接口,Mtc_CliNetworkChanged 和 Mtc_CliWakeup

Mtc_CliNetworkChanged 是在检测到有网络连接和没有网络连接的时候调用

没有网络连接的时候,参数为 MTC_ANET_UNAVAILABLE,这时候终端会停止 尝试连接

在有网络连接的时候,参数为 MTC_ANET_WIFI 或者 MTC_ANET_MOBILE,这 时候终端会立刻开始重试连接

Mtc_CliWakeup 是在程序切换前台和后台的时候调用

在程序切换到后台的时候,参数为 ZFALSE,这时候终端重试连接和保活发送的 间隔会拉大以减少耗电

在程序切换到前台的时候,参数为 ZTRUE,这时候终端重试连接和保活发送的间 隔会缩小

第一次重连间隔是 3秒, 之后每次重连间隔翻倍,直到10分钟为止。最终10分钟发起一次 重连。10分钟重连是指不做任何操作的情况下, 如果调⽤用 CliNetworkChanged, 或 CliWakeup 会立即重试
1. 通话建立时如何将自己的昵称带给对方?

iOS 平台:

调用 MtcCallDelegateCall 接口,第二个参数 displayName 传入自己的昵称 void MtcCallDelegateCall(NSString *number, NSString *displayName , NSString *peerDisplayName, BOOL isVideo)

Android 平台:

调用 com.justalk.cloud.juscall.MtcCallDelegate.call 接口,第二个参数 displayName 传入自己的昵称 public static void call(String number, String displayName, Strin g peerDisplayName, boolean isVideo)
2. SDK 中 Mtc_Call 相关接口中使用 iCallId 是否和服务器收到的通话状态通知中的 callId 是 否一样?
不一样。终端可以调⽤用 Mtc_CallGetSipCallId 获取服务器的 callId。除此之外的所有 SDK 接口和事件通知中的 iCallId 表示的是通话相关的本地资源。通话状态通知中的 callId 表示 的是通话相关的服务器资源。这两个资源生命周期是不同的,不能通用。
3.在通话中,如果一⽅方应用异常退出,应该怎么处理?
现在 SDK 默认处理是在等待 30 秒没有收到对方媒体数据时就会主动挂断通话。对方应⽤用 异常退出,或者对方断网事件过长都会触发该处理。
4.现在呼叫等待时间是多长?
60 秒。超时后服务器将主动挂断通话。
5.Android 呼叫时会出现下面的提示,是什么原因?
出现该提示一般是打开摄像头失败,请先检查系统设置是否允许了使用摄像头的权限。或 者第三发权限控制软件中是否设置允许使用摄像头。
6.通话集成之后,之前几次呼叫都可以接通,现在呼叫之后,那个终端没有弹出通话界面, 是什么原因?
一个可能的原因是那个终端登录的帐号,在其他设备上登录了,导致那个设备上帐号已经 登出。此时 SDK 会通知界⾯面 MtcLogoutedNotification 事件。但是 UI 没有对该事件处理, 所以再次呼叫那个帐号,对应的终端将不会收到呼叫了。 如果确定不是上述原因,就需要日志具体确定问题。
7.Mtc_CallGetPeerName 和 Mtc_CallGetPeerDisplayName 有什么不同?

Mtc_CallGetPeerName 是获取对方登录的 ID

Mtc_CallGetPeerDisplayName 是首先获取对方的昵称,如果没有昵称就是对方登录 的 ID。对方的昵称是对方调用 MtcCallDelegateCall 接口的第二个参数 displayName
8.A 呼叫 B,B 此时断网,A 挂断,B 网络恢复,此时 B 会弹出通话界面,并且马上就结 束,是什么原因?是否可以避免?

产生这个现象的原因是 B 网络恢复后,连续收到建立通话消息和结束通话消息。

A 呼叫 B 时,建立通话消息发送到服务器上,A 挂断时发送了结束通话消息,不是取消前 一个消息(服务器没有取消前一个消息的功能)。这些消息会在服务器上缓存一段时间 (60 秒)。如果 B 在缓冲的时间内网络恢复,则将收到缓存的消息。如果 B 在缓冲时间 之外网络恢复,则缓存消息已被删除,B 不会收到这些消息,也将不会出现弹出通话界面 并立刻结束的现象。 一种方式避免产⽣生这个现象,是在收到建立通话消息的时候延迟一段时间(例如 0.5 秒) 再显示通话界面,如果立刻收到结束通话的消息,就不显示通话界面。
9.集成 SDK 之后可以拨打通话,但是呼叫接通之后对方看不到视频,并且呼叫这个终端没有 弹出通话界面,可能是什么原因?

可能是没有调用初始化 CallDelegate。

iOS 平台调用 MtcCallDelegateInit 接口,类似代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunch

ingWithOptions:(NSDictionary *)launchOptions {

Zmf_AudioInitialize(NULL);

Zmf_VideoInitialize(NULL);

if (Mtc_Init(MY_APP_KEY) != ZOK) {

return NO;

}

MtcCallDelegateInit();

...

}


Android 平台调用 com.justalk.cloud.MtcCallDelegate.init 接⼝口,类似代码如下:

public class JApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

ZmfAudio.initialize(this);

ZmfVideo.initialize(this);

MtcApi.init(this, getString(R.string.JusTalkCloud_AppKey));

MtcCallDelegate.init(this);

...

}

}

10.在使用 Xcode 调试代码的时候,出现下面的异常,但是 Xcode 可以继续运行,是什么原 因?

上面的异常发生在内部在重连的时候,对应的对象已经释放掉了。这种是内部抛出了异 常,但不是一个问题,只有在 debug 的时候才会被 Xcode 捕获下来,你可以去掉捕获所有 异常的选项。在下图中去掉 All Exceptions 部分。

11.拨打方等待接听的那个音乐是哪个文件,这个可以改吗?是不是改个音乐直接换成你们的 文件名替换就行了?
替换 RingBack.wav 文件,一般是 8kHz 采样,PCM 格式。
12.iOS 平台上将别人打过来得声音改成系统自带得这个应该怎么做?
不能实现。
1. 在同一个局域网之内的两个 Sample 终端通话的视频质量不好,有时出现比较卡的情况是 什么原因?

JusTalk Cloud SDK 在通话中会进行点对点探测,一般在同一个局域网之内的两个终端通 话,媒体数据会直接通过点对点的方式传输,视频质量应该比较好。但是以下几个情况下会出现质量不好的情况:

两个终端分别接入同一热点 2.4G 和 5G 网络。 在这种情况下一般测试质量都不好。2.4G 和 5G 网络是同一热点的不同网络,不同热 点设备对这类连接的处理方式有不同。

有些热点 2.4G 和 5G 网络不能直接连接,此时媒体数据将通过服务器中转,造成 了质量下降。

有些热点 2.4G 和 5G 网络可以直接连接,但是质量也不好,丢包,抖动都可能较 大,所以也造成质量下降。

两个终端在同一网络的不同子网中。

不同子网的网络行为与网关或者路由器有关。有些情况能够穿透网关或者路由器,有 些情况不能穿透,就造成媒体数据通过服务器中转,引起质量下降。
1. Mtc_ImSendFile 这个接口调用多次,SDK 内部有没有做好队列发送?是否支持同时发送?
内部没有排队机制,多次调用会同时发。