全部產品
Search
文件中心

ApsaraVideo Live:通話前進行網路品質檢測

更新時間:Feb 12, 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();