既然做了直播,和觀衆互動有的時候就很必要了
那又小夥伴可能會覺得群消息聊天能夠完成互動的功能,但是群消息會随着直播房間的人數增多而變多,主播查看到有效消息的可能性就會降低,所以「連麥功能」可能會随着業務需求而添加進來。
那麼本篇文章就來說下,集成完直播功能後,如何再集成連麥功能。
本篇旨在打通經脈,純思想級别的,但是如果你現在項目着急,想粘貼複制一下就能完事,那本篇文章就不太适合了。建議直接看「小直播」官方demo。
好了,還是按照昨天的方式,一步一步的看吧~
查看騰訊雲官方文檔查看官網連麥文檔
同樣,為什麼推薦看官方的連麥文檔,是因為隻有熟悉了官方的這些指南,我們再編寫邏輯的時候才能有據可依,否則就是瞎頭蒼蠅到處亂撞。
連麥的整個流程
整體的内部流程就是:
1、把發起直播的人稱為`大主播`,把想要連麥的人稱為`小主播`
對應到上面的圖裡面,用戶A 則為`大主播`,用戶B 為`小主播`
2、`大主播`首先進行推流,推出的流「雲加速」處理後成為 `RTMP_ACC`格式的流
這種流速度更快,延遲更低,`小主播`拉取`RTMP_ACC`的流,并且開始推流。
3、`小主播`推出的流「雲加速」處理成為`RTMP_ACC`格式的流,連麥成立後
`大主播`拉取`小主播`推出來的流,這樣雙方都能看到彼此的流
4、`大主播`推出的流與`小主播`推出的流進行混流之後,經過處理,呈現給觀衆端
FLV/HLS 格式速度更快,觀衆端觀看的延遲性更低
搞清楚這個流程之後,就可以開始做連麥的功能了。
開始上手在上手之前,需要先購買連麥的服務,否則不能使用。
官方解釋:由于連麥功能會使用到高速專線來降低音視頻傳輸延遲,這部分功能需要額外購買套餐包才能開通,否則移動直播的各端 SDK 隻能使用雲直播的普通服務(推流和拉流),并不能開啟連麥功能。所以,隻有等公司決定了,才能搞,否則就隻能理論走一走了。
官方的Step10. 觀衆與主播連麥中,把具體的細節都描述出來了,這裡截下圖:
連麥操作流程
我們要做的就是此項,需要注意的是MLVBLiveRoom 在設計上最多支持10人同時連麥,但出于兼容低端 Android 終端和實際體驗效果的考慮,建議将同時連麥人數控制在6人以下。
拆分細節騰訊雲中提供了一個 MLVBLiveRoom 用來處理各種情況,「小直播」的 demo 中提供了MLVBLiveRoom 接口的實現類: MLVBLiveRoomImpl ,我們使用這個實現類來完成下面的九項操作
而我們可以利用 MLVBLiveRoom.requestJoinAnchor() 方法向主播端發起請求
觀衆發過來連麥請求,會觸發 onRequestJoinAnchor() 回調的通知,通過調用MLVBLiveRoom.responseJoinAnchor() 方法來确定接受連麥請求
IMLVBLiveRoomListener.RequestJoinAnchorCallback() 中會有主播是否同意連麥的結果,如果主播同意,調用 startLocalPreview() 開啟本地攝像頭,并調用 joinAnchor() 開始推流
小主播進入連麥狀态,并且開始推流,那麼大主播會收到 IMLVBLiveRoomListener.onAnchorEnter()的回調,通過 startRemoteView() 就能看到小主播的畫面
大主播端可以同時接入 <10 個的連麥,但是由于手機性能要求,最大最好不要超過 6 個連麥者
所以當大主播這邊的連麥人太多的話,kickoutJoinAnchor() 可以踢掉一連麥的小主播,小主播這邊則可以通過 quitJoinAnchor() 自己退出連麥狀态。
好,上邊基本上就把連麥中的步驟給列了一下。但是實際開發中客戶端同學可能還是一臉懵逼。因為連麥的開發是和後端同學一起協同的。
下面列一下後端同學需要處理的事項
下面再分别簡述下
* 直播開始後,主播的推流地址
* 直播開始後,觀衆端拉去主播流地址
* 小主播申請連麥成功後,因為需要推流,故需要小主播的推流地址
* 小主播推流成功後,大主播需要看到小主播的流,故需要拉取小主播的流地址,這個流是加速流,避免延遲
* 小主播推流成功後,為避免延遲,小主播也要将之前的播放流切換成為大主播流的加速流
* 大主播、小主播連麥成功後,觀衆端要看到兩者合并的流,這個流就是混流地址,并且需要處理成為FLV/HLS 格式的流
這六個流是需要後端處理的,客戶端同學不要自己搞啊~
結合着後端同學提供的六個流和上方的 四大步驟(9個小步驟),基本上就能将連麥功能開發出來了,具體的細節這篇文章就不再介紹了,騰訊雲提供的「小直播」的 demo 中已經将直播相關的代碼寫的很清楚了
小直播github地址
但是如果仍然有問題,那麼可以私信我。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!