天天看點

産品百科 |使用阿裡雲 RTC SDK 耗時高怎麼辦?

配置合理的自動訂閱和自動推流

以下建議可以為您減少耗時:

  • 如果您的場景中,入會後會預設推流,建議您采用自動推流模式。
  • 如果您的場景中,入會後預設會訂閱頻道中的人,建議您采用自動訂閱的模式。自動訂閱模式在接收到遠端使用者回調之後,不需要再手動訂閱,能更加節省時間。

通過以下接口設定自動訂閱和自動推流:

setAutoPublish:設定是否自動釋出,是否自動訂閱。預設是自動釋出和訂閱,必須在加入頻道之前設定。

- (int)setAutoPublish:(BOOL)autoPub withAutoSubscribe:(BOOL)autoSub;      

合理的使用 publish 和 subscribe 接口

  • publish 和 subscribe 接口用于手動推流、手動訂閱、以及會議中推流和訂閱配置的變更。
  • publish 接口需要配合 configLocalCameraPublish、configLocalScreenPublish、configLocalAudioPublish 接口使用。
  • subscribe 接口需要配合 configRemoteCameraTrack、configRemoteScreenTrack、configRemoteAudio 接口使用。
  • 根據自身的需要,合理使用大小流。目前預設推小流,如果無需小流,建議關閉。
  • 需要注意:每次 config 完之後調用一次 publish 接口或者 subscribe 接口就可以,無需重複調用。如:目前相機流(大流)和音頻流需要調用 publish 接口,而螢幕共享流不需要調用。
    • 正确的調用方式如下:
[self.engine configLocalAudioPublish:YES];
[self.engine configLocalCameraPublish:YES];
[self.engine configLocalScreenPublish:NO];
[self.engine configLocalSimulcast:NO forTrack:AliRtcVideoTrackCamera];
[self.engine publish:^(int err) {
    // 相關UI操作。
}];      
    • 錯誤的調用方式如下:
[self.engine configLocalAudioPublish:YES];
[self.engine publish:^(int err) {
    // 相關UI操作。
}]; 
[self.engine configLocalCameraPublish:YES];
[self.engine publish:^(int err) {
    // 相關UI操作。
}]; 
[self.engine configLocalScreenPublish:NO];
[self.engine publish:^(int err) {
    // 相關UI操作。
}]; 
[self.engine configLocalSimulcast:NO forTrack:AliRtcVideoTrackCamera];
[self.engine publish:^(int err) {
    // 相關UI操作。
}];      

場景中存在頻繁切換頻道或者頻繁入離會

  • 維護一個 SDK 的示例,避免頻繁的建立和銷毀 sdk 帶來的耗時。通過一個 SDK 執行個體的入離會來達到切換頻道的效果。
  • 可以根據需要,提前打開音頻裝置,節省每次入離會的耗時。比如:在語音直播間的場景,可以在建立 SDK 後調用一次 startAudioPlayer 接口提前打開播放裝置。在銷毀 sdk 前調用 stopAudioPlayer 接口關閉播放裝置。中間切換頻道和入離會均無需再額外調用。

    startAudioPlayer:開啟音頻播放。您可以控制提前打開音頻播放,如果不設定,SDK 會在訂閱成功的時候打開音頻播放。

- (void)startAudioPlayer;      
  • stopAudioPlayer:關閉音頻播放。您可以控制關閉音頻播放。
- (void)stopAudioPlayer;      
  • 音頻采集裝置也可以根據自身的場景決定是否提前打開。startAudioCapture:開啟音頻采集。您可以控制提前打開音頻采集,如果不設定,SDK 會在開始推流的時候打開音頻采集。
- (void)startAudioCapture;      
  • stopAudioCapture:關閉音頻采集。您可以控制關閉音頻采集。
- (void)stopAudioCapture;      
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
産品百科 |使用阿裡雲 RTC SDK 耗時高怎麼辦?