网络状况

本章节介绍有关网络状况的功能。针对网络状况,网易云提供了网络探测网络状况回调这两个功能。 网络探测是一个辅助的网络情况测试工具,可以探测音视频通话网络的连通性、丢包率和延迟等信息。目前支持选择音频通话和视频通话这两种通话模式的探测,视频通话的网络探测支持选择相应的清晰度进行探测。另外,网络探测会占用网络带宽资源,建议在通话开始之前使用以免影响通话质量。 网络状况回调是通话过程中,SDK定时会通知上层当前的网络状况。值得注意的是,这个网络状况是基于当前的实际通话情况的。比如,当前正进行的是音频通话,上报的网络情况是良好,那只是说明当前的网络情况可以很好地满足音频通话,并不能说明当前进行视频通话也会很流畅。

网络探测

在通话前或者通话中进行网络探测,用于检测用户当前网络的接入质量。网络探测是一个辅助的网络情况测试工具,可以探测音视频通话网络的连通性、丢包率和延迟等信息。目前支持选择音频模式和不同清晰度的视频模式的探测,视频模式会根据清晰度类型去探测,具体类型参照AVChatNetDetectType。另外,网络探测会占用网络带宽资源,建议在通话开始之前使用以免影响通话质量。

网络探测情况分级表

在结果信息中,lossRate、rttAverage、rttMeanDeviation这三个值最能反应当前客户端的实际网络情况。由这三个值可以计算出当前的网络状况指数:

网络状况指数 = (lossRate/20)*50% +(rttAverage/1200)*25% +(rttMeanDeviation/150)*25%

经过我们的反复测试,现提供三个网络状况指数节点

网络状况指数节点 lossRate(%) rttAverage(ms) rttMeanDeviation(ms) 网络状况指数
A 3 500 50 0.2625
B 10 800 80 0.55
C 20 1200 150 1

备注:

1、当网络状况指数≤0.2625时,网络状况非常好,音视频通话流畅;

2、当0.2625<网络状况指数≤0.55时,网络状况好,音视频通话偶有卡顿;

3、 当0.55<网络状况指数≤1时,网络状况差,音频通话流畅;

4、当网络状况指数>1时,网络状况非常差,音频通话偶有卡顿。

     /**
     * 开始探测任务
     *
     * @param type    探测类型 {@link AVChatNetDetectType}
     * @param callback 探测结果回调
     * @return 探测任务ID
     */
    public static String startNetDetect(int type, AVChatNetDetectCallback callback);

    /**
     * 开始探测任务
     * 使用音频模式探测
     * @param callback 探测结果回调
     * @return 探测任务ID
     */
    public static String startNetDetect(AVChatNetDetectCallback callback);
    /**
     * 停止探测
     *
     * @param id 探测任务ID
     */
    public static void stopNetDetect(String id);

开始探测任务接口参数说明:

参数 说明
type 探测类型,参考AVChatNetDetectType
callback 探测结果回调。

停止探测任务接口参数说明:

参数 说明
id 探测任务ID。

开启网络探测,返回本次任务的ID

AVChatNetDetector.startNetDetect(int type, AVChatNetDetectCallback callback);

结束网络探测,传入探测任务ID

AVChatNetDetector.stopNetDetect(id);

网络探测结果通知

AVChatNetDetectCallback#onDetectResult( ... );

当前通话网络状况回调

通话过程中网络状态发生变化,会回调 onNetworkQuality

    /**
     * 网络状态发生变化
     *
     * @param account    用户账号
     * @param quality 网络状态等级
     * @param stats   网络状态信息
     * @see AVChatNetworkQuality
     */
    void onNetworkQuality(String account, int quality, AVChatNetworkStats stats);
参数 说明
account 用户账号。
quality 网络状态等级(0~3,越小越好)。
stats 网络状态信息,参考AVChatNetworkStats
// @param quality 0~3 ,the less the better; 0 : best; 3 : worst
@Override
public void onNetworkQuality(String account, int quality, AVChatNetworkStats stats) {}

需要调用 AVChatManager#observeAVChatState 注册音视频通话状态回调才能生效onNetworkQuality