配置合理的自動訂閱和自動推流
以下建議可以為您減少耗時:
- 如果您的場景中,入會後會預設推流,建議您采用自動推流模式。
- 如果您的場景中,入會後預設會訂閱頻道中的人,建議您采用自動訂閱的模式。自動訂閱模式在接收到遠端使用者回調之後,不需要再手動訂閱,能更加節省時間。
通過以下接口設定自動訂閱和自動推流:
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;
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
