iOS语音直播SDK及功能实现流程
語音直播場景的典型使用案例是同一房間內的成員,進行語音直播,有需要時也可進行實時語音通話。Zego 提供了對語音直播場景的支持,此文講述如何在iOS環境下利用即構SDK快速實現語音直播功能。
實現播放本地音頻、視頻文件的功能(可用于播放背景音樂,播放MV,播放直播音效等場景),請下載 ZegoAudioRoom_MediaPlayer iOS,接入請參考:SDK集成指引。
功能實現流程
語音直播場景的使用場景主要有 2 種,在同一語音直播間內:
1、單主播語音直播,1 個主播發布語音,觀眾播放語音。
2、多主播語音直播,主播與觀眾連麥,進行實時語音互動。
以 2 人間的語音直播為例,流程如下:
1、單主播語音直播
單主播直播時,一個房間內僅有一個主播,不支持主播與觀眾的連麥互動。
請注意,下列操作前,請確保各成員均登錄至同一房間。
1.1 主播推流
房間內成員均可推流,發布直播。語音直播場景下,發布直播應該使用手動發布:
請注意:
如果用戶選擇自動發布直播,登錄成功后,SDK 會自動開始推流,用戶無需手動觸發。
AudioLive 中手動發布直播相關源碼片段演示如下,僅供參考:
ZegoAudioLiveViewController.m// 用戶主動點擊發布直播按鈕 - (IBAction)onPublishButton:(id)sender {if (self.isPublished){// 停止直播[[ZegoAudioLive api] stopPublish];[self.publishButton setTitle:NSLocalizedString(@"開始直播", nil) forState:UIControlStateNormal];self.isPublished = NO;// 刪除流for (ZegoAudioStream *audioStream in self.streamList){if ([audioStream.userID isEqualToString:[ZegoSettings sharedInstance].userID]){[self.streamList removeObject:audioStream];break;}}[self.tableView reloadData];}else{// 手動發布直播BOOL result = [[ZegoAudioLive api] startPublish];if (result == NO){self.tipsLabel.text = NSLocalizedString(@"開播失敗,直播流超過上限", nil);}else{[self.publishButton setTitle:NSLocalizedString(@"停止直播", nil) forState:UIControlStateNormal];self.publishButton.enabled = NO;}} }1.2 觀眾拉流
房間內成員均可播放直播,登錄房間成功后,SDK 會自動拉流播放直播。用戶無需手動觸發拉流。
1.3 結束音頻直播
音頻通話結束后的操作主要是登出房間、清理視圖或數據等。開發者可按需調用。
AudioLive 中結束音頻直播相關源碼片段演示如下,僅供參考:
ZegoAudioLiveViewController.m// 關閉語音直播通話 ViewController - (IBAction)closeView:(id)sender {// 退出房間[[ZegoAudioLive api] logoutRoom];[self.streamList removeAllObjects];[self dismissViewControllerAnimated:YES completion:nil]; }2、多主播語音直播
多主播直播是主播與觀眾連麥,使觀眾也成為主播的互動功能,類似實時語音功能。
多主播直播的推流、拉流流程,同單主播一致,不再贅述。
但多主播比單主播多了一個信令交互的過程。開發者可以通過該過程,設計邏輯,決定是否允許房間內拉流的成員推流,成為主播。該信令交互由開發自行實現,SDK 僅提供推拉流的能力。
請注意,AudioLive 中沒有使用信令交互決定其他用戶是否可以推流。用戶進入房間即可自動或手動推流。
總結
以上是生活随笔為你收集整理的iOS语音直播SDK及功能实现流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 社会网络分析利器——pajek使用教程
- 下一篇: 云计算技术的产生、概念、原理、应用和前景