跳到主要内容

RTC 网络探测

自 5.1.16 起, RTCLib SDK 提供了一个 startRTCProbeTest 方法,支持用户在加入房间前进行网络质量探测,然后通过回调将当前网络质量的相关数据,包括往返时延、上下行丢包率、上下行网络带宽等数据返回给上层应用。

提示

请在加入房间前完成网络质量探测。SDK 不支持在音视频通话过程中进行网络质量探测。

设置 RTC 网络探测回调事件

通过调用 RCRTCEngine#setRTCProbeTestListener 方法注册 RTC 网络质量探测结果回调。

示例代码:

RCRTCEngine.getInstance().setRTCProbeTestListener(new IRCRTCProbeTestListener() {
@Override
public void onRTCProbeStatus(List<RCRTCProbeStatusResult> statusResults) {
// 每隔约 2 秒回调一次上下行网络的带宽、丢包、网络抖动和往返时延等数据探测结果
}

@Override
public void onRTCProbeInterrupted(RTCErrorCode errorCode) {
// RTC 网络探测过程中被打断,如探测过程中调用 joinRoom 或 uninit 接口都会打断网络探测
}

@Override
public void onRTCProbeCompete() {
// RTC 网络探测结束完成
}
});

开启 RTC 网络探测

加入房间前,调用 startRTCProbeTest 开启网络质量探测。开启探测成功后,会通过 setRTCProbeTestListener 注册的回调来反馈探测结果。每隔约 2 秒回调一次上下行网络的带宽、丢包、网络抖动和往返时延等数据。

探测总时长约为 30 秒,30 秒后会自动停止探测并调用 onRTCProbeCompete 回调方法通知上层应用探测结束。

提示

在探测自动结束(onRTCProbeCompete)前,如调用 joinRoom 或 unInit 等 API 方法会打断当前正在进行的 RTC 网络探测。

示例代码:

RCRTCEngine.getInstance().startRTCProbeTest(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 开启 RTC 网络探测成功
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 开启 RTC 网络探测失败
}
});

停止 RTC 网络探测

开启探测成功约 30 秒后,会自动停止探测,如果不想等待自动结束,可调用 stopRTCProbeTest 方法强制停止探测。

RCRTCEngine.getInstance().stopRTCProbeTest(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 停止 RTC 网络探测成功
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 停止 RTC 网络探测失败
}
});