音視訊通信 RTC(Real-Time Communication)是阿裡雲覆寫全球的實時音視訊開發平台,依托核心音視訊編解碼、信道傳輸、網絡排程技術,提供高可用、高品質、超低延時的音視訊通信服務,讓使用者快速搭建多端實時應用,适用于線上教育、視訊會議、互動娛樂、音視訊社交等場景。
産品連結:
https://www.aliyun.com/product/rtc 阿裡雲 RTC 提供網絡品質監控功能,您可以通過使用 AliRtcNetworkQuality 回調來擷取網絡品質評價。功能簡介
在網絡品質不理想的情況下,音視訊通信的品質受客觀因素影響會下降。當監控到弱網環境時,為保證基礎通信體驗,建議您使用 SDK 對應的方法分别在釋出端和訂閱端進行如下優化。
- 調整視訊流規格:通過設定較低檔位規格的 VideoProfile,減少視訊通信的網絡資源占用。
- 切換視訊為小流:小流有着與大流相同的寬高比,但是分辨率和碼率相對較低,網絡資源占用的需求較低。
- 僅釋出音頻流:在極端網絡環境下,可以選擇隻發送音頻流,進而保證通信的持續。
通過使用 AliRtcNetworkQuality 回調擷取的網絡評價如下所示。
枚舉名 | 描述 |
AlivcRtcNetworkQualityExcellent | 網絡極好,流程度清晰度品質好 |
AlivcRtcNetworkQualityGood | 網絡好,流暢度清晰度和極好差不多 |
AlivcRtcNetworkQualityPoor | 網絡較差,音視訊流暢度清晰度有瑕疵,不影響溝通 |
AlivcRtcNetworkQualityBad | 網絡差,視訊卡頓嚴重,音頻能正常溝通 |
AlivcRtcNetworkQualityVeryBad | 網絡極差,基本無法溝通 |
AlivcRtcNetworkQualityDisconnect | 網絡中斷 |
AlivcRtcNetworkQualityUnknow | 未知 |
實作方法
在實作該功能之前,需要您已經搭建 AppServer、實作基本功能等操作。詳情請參見
入門概述。
具體實作方法如下所示。
您可以通過 onNetworkQualityChanged(網絡狀況變化時回調)方法獲得網絡品質,然後在根據實際政策進行優化。
- (void)onNetworkQualityChanged:(NSString *)uid
upNetworkQuality:(AliRtcNetworkQuality)upQuality
downNetworkQuality:(AliRtcNetworkQuality)downQuality;
參數 | 類型 | |
uid | NSString * | 網絡品質發生變化的使用者 ID |
upQuality | AliRtcNetworkQuality | 上行網絡品質 |
downQuality | 下行網絡品質 |
-
您可以調用 setVideoProfile 設定視訊流規格。
說明 通過設定較低規格的視訊流,減少視訊通信的網絡資源占用。
AliRtcVideoProfile vp = AliRtcVideoProfile_Default;
[self.engine setVideoProfile:vp forTrack:AliRtcVideoTrackCamera];
profile | AliRtcVideoProfile | 視訊流參數。 |
track | AliRtcVideoTrack | 需要設定的視訊 Track 類型。 |
- 調用 configRemoteCameraTrack 将訂閱視訊切換為小流。說明當網絡品質恢複優良狀态時,請您根據實際需求決定是否切換至優先訂閱大流(即預設的訂閱模式)。
- (void)configRemoteCameraTrack:(NSString *)uid preferMaster:(BOOL)master enable:(BOOL)enable;
String | 使用者 id | |
master | boolean | 是否大流 |
enable | 是否可用 |
- 調用 subscribe 重新訂閱:
[self.engine subscribe:view.userID onResult:^(NSString *uid, AliRtcVideoTrack vt, AliRtcAudioTrack at) {}];
-
- 切換為小流可以編寫如下代碼:
[self.engine configRemoteCameraTrack:view.userID preferMaster:NO enable:YES];
[self.engine subscribe:view.userID onResult:^(NSString *uid, AliRtcVideoTrack vt, AliRtcAudioTrack at) {}];
-
- 切換為大流可以編寫如下代碼:
[self.engine configRemoteCameraTrack:view.userID preferMaster:YES enable:YES];
[self.engine subscribe:view.userID onResult:^(NSString *uid, AliRtcVideoTrack vt, AliRtcAudioTrack at) {}];
-
調用 configLocalCameraPublish 方法實作僅釋出音頻流。
說明 當網絡品質恢複優良狀态時,請您根據實際需求決定是否重新釋出音視訊流。
- (void)configLocalCameraPublish:(BOOL)enable;
說明 | ||
true 為允許釋出相機流,false 表示不允許 |
- 示例代碼如下:
[self.engine configLocalCameraPublish:NO];
[self.engine publish:nil];
獲得更多功能實作方法,請參見
AliRtcEngine 接口「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
