通话前网络检测

最近更新时间:2022-09-20 05:17:40

功能描述

anyRTC 提供了通话前网络和设备检测的功能,方便你进行音视频通话时,保证通信顺畅。通话前检测从两个角度开展:

  1. 网络质量检测:通过检测当前网络质量的上下行,从而判断用户当前的网络质量是否良好。

  2. 设备质量检测:检测摄像头是否正常工作、检测音频设备是否正常录音及播放、设置摄像头方向或者切换音频设备(麦克风和扬声器)等。

网络质量探测

RTC SDK 提供 startLastmileProbeTest 方法,可在开始通话前进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。

实现方法

该功能需要在用户加入频道前实现,具体步骤流程如下:

  1. 调用 startLastmileProbeTest 进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延。

  2. 启用该方法后,SDK 会依次返回如下 2 个回调:

    • onLastmileQuality:约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近主观感受

    • onLastmileProbeResult:约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,更客观

  3. 获取到网络质量数据后,调用 stopLastmileProbeTest 停止通话前网络质量检测。

如下是通话前网络质量检测图:

示例代码

参考下文示例代码在你的项目中进行通话前网络质量探测。

// 创建一个 LastmileProbeConfig 对象。参数可参考 API 文档
LastmileProbeConfig config = new LastmileProbeConfig(){};
// 是否探测上行网络质量
config.probeUplink =  true;
// 是否探测下行网络质量
config.probeDownlink = true;
// 设置最高发送码率,单位为 bps,范围为 [100000, 5000000]
config.expectedUplinkBitrate = 100000;
// 设置最高接收码率,单位为 bps,范围为 [100000, 5000000]
config.expectedDownlinkBitrate = 100000;
// 加入频道前开始网络探测
rtcEngine.startLastmileProbeConfig(config);

// 回调
// 开始网络探测后,约 2 秒后会发生该回调
public void onLastmileQuality(int quality)


// 开始网络探测后,约 30 秒后会发生该回调
public void onLastmileProbeResult(LastmileProbeResult) {
    // (1)可以选择在回调内部结束测试。在测试结束前,anyRTC 建议不要调用其他 API 方法
    rtcEngine.stopLastmileProbeTest();
}

// (2)也可以选择其他时候结束测试。在测试结束前,anyRTC 建议不要调用其他 API 方法
rtcEngine.stopLastmileProbeTest();