网络状况
更新时间: 2024/08/23 10:24:52
本章节介绍有关网络状况的功能。针对网络状况,网易云信提供了网络探测和网络状况回调这两个功能。 网络探测是一个辅助的网络情况测试工具,可以探测音视频通话网络的连通性、丢包率和延迟等信息。目前支持选择音频通话和视频通话这两种通话模式的探测,视频通话的网络探测支持选择相应的清晰度进行探测。另外,网络探测会占用网络带宽资源,建议在通话开始之前使用以免影响通话质量。 网络状况回调是通话过程中,SDK定时会通知上层当前的网络状况。值得注意的是,这个网络状况是基于当前的实际通话情况的。比如,当前正进行的是音频通话,上报的网络情况是良好,那只是说明当前的网络情况可以很好地满足音频通话,并不能说明当前进行视频通话也会很流畅。
网络探测
- API介绍
在通话前或者通话中进行网络探测,用于检测用户当前网络的接入质量。网络探测是一个辅助的网络情况测试工具,可以探测音视频通话网络的连通性、丢包率和延迟等信息。目前支持选择音频模式和不同清晰度的视频模式的探测,视频模式会根据清晰度类型去探测,具体类型参照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时,网络状况非常差,音频通话偶有卡顿。
- API原型
java /**
* 开始探测任务
*
* @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
javaAVChatNetDetector.startNetDetect(int type, AVChatNetDetectCallback callback);
结束网络探测,传入探测任务ID
javaAVChatNetDetector.stopNetDetect(id);
网络探测结果通知
javaAVChatNetDetectCallback#onDetectResult( ... );
当前通话网络状况回调
- API介绍
通话过程中网络状态发生变化,会回调 onNetworkQuality
。
- API原型
java /**
* 网络状态发生变化
*
* @param account 用户账号
* @param quality 网络状态等级
* @param stats 网络状态信息
* @see AVChatNetworkQuality
*/
void onNetworkQuality(String account, int quality, AVChatNetworkStats stats);
- 参数说明
参数 | 说明 |
---|---|
account | 用户账号。 |
quality | 网络状态等级(0~3,越小越好)。 |
stats | 网络状态信息,参考AVChatNetworkStats。 |
- 示例
java// @param quality 0~2 ,the less the better; 0 : best; 2 : worst
@Override
public void onNetworkQuality(String account, int quality, AVChatNetworkStats stats) {}
- 特殊说明
需要调用 AVChatManager#observeAVChatState
注册音视频通话状态回调才能生效onNetworkQuality
。
客户端网络类型变更回调
- API介绍
通话过程中客户端网络类型发生变更,会回调 onConnectionTypeChanged
。
- API原型
java /**
* 客户端网络类型发生变更
*
* @param netType 用户账号
* @see AVChatConnectionType
*/
void onConnectionTypeChanged(int netType);
- 参数说明
参数 | 说明 |
---|---|
netType | 网络类型,参考AVChatConnectionType |
- 示例
java@Override
public void onConnectionTypeChanged(int netType) {}
- 特殊说明
需要调用 AVChatManager#observeAVChatState
注册音视频通话状态回调才能生效onConnectionTypeChanged
。