本文將為您介紹如何在通話前進行網路品質檢測。
功能介紹
ARTC SDK 提供通話前進行網路品質檢測的功能,用於在加入頻道前探測本網品質。這一功能對於保障即時音視訊通話的穩定性與流暢性至關重要,能夠提前發現潛在的網路問題,讓使用者及時採取措施最佳化網路,避免在通話過程中出現卡頓、掉幀、聲音中斷等不良體驗。
範例程式碼
Android端進行網路品質檢測:Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java。
iOS端進行網路品質檢測:iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift。
功能原理
以iOS介面為例,ARTC SDK提供了startLastmileDetect方法,用於在加入頻道之前探測本網品質,並返回有關網路品質評分和網路品質統計資訊。參考以下步驟進行網路品質探測:
在加入頻道之前,調用
startLastmileDetect啟動網路探測。您需要在AliRtcNetworkQualityProbeConfig中設定探測對象和預期最高碼率。調用該方法後,SDK會觸發以下回調:
onLastmileDetectResultWithQuality:在調用
startLastmileDetect方法2秒後觸發。該回調通過打分反饋上下行網路品質,更貼近主觀感受。onLastmileDetectResultWithBandWidth:在調用
startLastmileDetect方法30秒後觸發。該回調返回網路狀況的即時統計資料,包括丟包率、網路抖動和可用頻寬,更加客觀。
擷取網路品質統計資訊後,調用
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
- (int)stopLastmileDetect;Windows
rtcEngine.stopLastmileDetect();