1. 程式人生 > >iOS語音直播SDK及功能實現流程

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 中沒有使用信令互動決定其他使用者是否可以推流。使用者進入房間即可自動或手動推流。