全部产品
Search
文档中心

视频直播:通话前进行网络质量检测

更新时间:Feb 11, 2026

本文将为您介绍如何在通话前进行网络质量检测。

功能介绍

ARTC SDK 提供通话前进行网络质量检测的功能,用于在加入频道前探测本地网络质量。这一功能对于保障实时音视频通话的稳定性与流畅性至关重要,能够提前发现潜在的网络问题,让用户及时采取措施优化网络,避免在通话过程中出现卡顿、掉帧、声音中断等不良体验。

示例代码

Android端进行网络质量检测Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java

iOS端进行网络质量检测iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift

功能原理

image

以iOS接口为例,ARTC SDK提供了startLastmileDetect方法,用于在加入频道之前探测本地网络质量,并返回有关网络质量评分和网络质量统计信息。参考以下步骤进行网络质量探测:

  1. 在加入频道之前,调用startLastmileDetect启动网络探测。您需要在AliRtcNetworkQualityProbeConfig中设置探测对象和预期最高码率。

  2. 调用该方法后,SDK会触发以下回调:

    • onLastmileDetectResultWithQuality:在调用startLastmileDetect方法2秒后触发。该回调通过打分反馈上下行网络质量,更贴近主观感受。

    • onLastmileDetectResultWithBandWidth:在调用startLastmileDetect方法30秒后触发。该回调返回网络状况的实时统计数据,包括丢包率、网络抖动和可用带宽,更加客观。

  3. 获取网络质量统计信息后,调用stopLastmileDetect方法停止本地网络检测。

代码示例

一、发起网络质量探测

Android

startNetworkQualityProbeTest - 开启网络质量探测

public abstract int startNetworkQualityProbeTest(AlirtcNetworkQualityProbeConfig config);

iOS

startLastmileDetect - 开始网络质量探测

- (int)startLastmileDetect:(AliRtcNetworkQualityProbeConfig *_Nonnull)config;

Windows

AliRtcNetworkProbeConfig config;
config.probeUplink = true;    // 探测上行网络
config.probeDownlink = true;  // 探测下行网络

rtcEngine.startLastmileDetect(config);

二、接收网络质量探测回调

Android

onNetworkQualityProbeTest - 网络质量探测的回调,开始探测3s左右提供该回调

onNetworkQualityProbeTestResult - 网络质量探测的结果回调,探测30s左右提供该回调

public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}

public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}

iOS

onLastmileDetectResultWithQuality - 网络质量探测回调

onLastmileDetectResultWithBandWidth - 网络质量探测结果的回调

- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;

- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;

Windows

// 接收网络质量探测回调(替换原来的onNetworkQualityChanged)
void OnLastmileDetectResultWithQuality(AliEngineNetworkQuality networkQuality) override {
    std::string message = getNetworkQualityString(networkQuality);
    networkTestResultText += "网络探测质量: " + message + "\n";
    std::cout << "=== 网络质量探测回调 ===" << std::endl;
    std::cout << networkTestResultText << std::endl;
}


// 接收lastmile网络探测结果回调
void onLastmileDetectResultWithBandWidth(int code,
                                       const AliRtcNetworkProbeResult& result) override {
    std::string message = buildNetworkTestResultMessage(code, result);
    networkTestResultText += message + "\n";
    std::cout << "=== Lastmile探测结果回调 ===" << std::endl;
    std::cout << networkTestResultText << std::endl;
}

三、停止网络质量探测

Android

stopNetworkQualityProbeTest - 停止网络质量探测

public abstract int stopNetworkQualityProbeTest();

iOS

stopLastmileDetect - 停止网络质量探测

- (int)stopLastmileDetect;

Windows

rtcEngine.stopLastmileDetect();