關(guān)于直播的一些思路

序言

推拉流這里暫不涉及了,這里主要說一下直播的一些邏輯流程的難點。

直播架構(gòu)-層級劃分

為了更方便的實現(xiàn)和管理代碼,個人把直播劃分為3個層級
1、直播層:用于實現(xiàn)推流和拉流以及回調(diào)的監(jiān)聽;
2、交互層:用于彈幕發(fā)送和功能按鈕的點擊;
3、禮物展示層:用于禮物動畫的展示,且在最上層。

直播層

開啟直播

1、一進(jìn)入直播模塊就獲取用戶直播信息,在點擊開啟直播時進(jìn)行判斷:如果還不是認(rèn)證主播,就進(jìn)行實名認(rèn)證;如果是認(rèn)證主播,再獲取主播相關(guān)信息。

2、調(diào)開啟直播接口,通知服務(wù)器開啟直播,并調(diào)用開啟和進(jìn)入直播間接口,通知服務(wù)器進(jìn)入直播間,查看是否用相機(jī)、麥克風(fēng)權(quán)限,然后開始推流。

3、推流過程中要監(jiān)聽幾種推流狀態(tài):
? ?1)打開攝像頭失??;
? ?2)打開麥克風(fēng)失敗;
? ?3)網(wǎng)絡(luò)波動狀態(tài);
? ?4)斷網(wǎng)狀態(tài)(重連服務(wù)器);
? ?5)斷網(wǎng)后多次重連服務(wù)器失敗狀態(tài)(主播退出直播界面至列表界面);
? ?6)推流成功狀態(tài)(加載動畫結(jié)束,客戶端設(shè)置用戶為開播狀態(tài))。

關(guān)閉直播

1、調(diào)關(guān)閉直播接口,通知服務(wù)器關(guān)閉直播,并調(diào)用關(guān)閉和退出直播間接口,通知服務(wù)器退出直播間。然后停止推流。

2、進(jìn)入結(jié)算界面。

觀看直播

1、觀眾通過后臺獲取拉流地址播放直播畫面;

2、監(jiān)聽播放事件回調(diào),做相應(yīng)UI操作。

交互層(即時通訊)

交互層負(fù)責(zé)所有的用戶交互,是整個直播模塊的難點,也是客戶端要實現(xiàn)的最復(fù)雜的部分,交互有很多(看產(chǎn)品 ̄_, ̄ ),比較典型或復(fù)雜的有:
1、聊天彈幕的發(fā)送,禮物的發(fā)送;
2、守護(hù)席的爭奪;
3、觀眾與主播連麥;
4、主播與主播的PK。

為什么要括弧個即時通訊呢,因為交互層這個層級就是和即時通訊緊密聯(lián)系在一起的,無時無刻都在即時通訊!先舉個守護(hù)席的例子吧。

注:使用即時通訊時的字段兩端要統(tǒng)一。

守護(hù)席

守護(hù)席的狀態(tài)要分兩個視角:搶占視角與觀看視角。

搶占視角:搶占細(xì)節(jié)就不詳述了,主要說流程。搶占觀眾在點擊搶占后發(fā)送請求給服務(wù)器,成功后改變自身UI,然后發(fā)送即時通訊(注明搶占字段的即使消息)給聊天室里的其他人。其他人通過即時通訊回調(diào)解析搶占消息刷新?lián)屨糢I。

觀看視角:其他觀眾收到通知,解析為有人獲得守護(hù)席通知,改變守護(hù)席UI。

彈幕聊天

字段需求:個人產(chǎn)品的需求是需要展示人物等級,用戶名根據(jù)等級改變顏色且可點擊。所以這里即時通訊就要傳遞用戶名、等級、發(fā)言內(nèi)容等字段。

發(fā)送者視角:發(fā)送者發(fā)送一條即時通訊消息,消息發(fā)送給聊天室里的所有用戶。消息發(fā)送成功后在自己聊天列表添加一條消息。

接收者視角:接收者在接收到消息后,解析為聊天消息,在聊天列表添加一條消息。

觀眾與主播連麥

需求是最多支持三個連麥。那么這里就要記錄主播連麥觀眾信息數(shù)組,這樣可以更方便的管理主播的連麥觀眾。因為連麥也有即時性的特性,所以也用即時通訊實現(xiàn)。
先理清身份,連麥有三個身份:主播方、連麥觀眾方與普通觀眾方。

連麥觀眾方:發(fā)起連麥,等待主播同意;同意并獲取主播拉流后跳轉(zhuǎn)推流界面進(jìn)行推流并小窗口展示播放主播畫面。(注:這里推流和拉流的監(jiān)聽依舊要做好)。這里發(fā)起連麥會有幾種拒絕狀態(tài):1.主播手動拒絕;2.請求超時;3.主播占線中;4.主播連麥人數(shù)已滿;5.主播在PK中;6.主播連麥功能關(guān)閉。

主播方:收到連麥請求,同意后發(fā)送帶有自己底鏈路拉流地址給連麥觀眾,并展示播放器,但沒有畫面;待收到連麥觀眾低鏈路拉流地址后播放,并做混流處理。同樣要做好播放監(jiān)聽。

普通觀眾方:普通觀眾基本不要做什么,播放的是混流地址。

主播與主播的PK

個人認(rèn)為主播與主播之間的PK相對于連麥要簡單些。
這里也是三個角色:發(fā)起PK主播方、接收PK主播方與雙方普通觀眾方。

發(fā)起PK主播方:發(fā)起PK,并發(fā)送自己低鏈路拉流地址;等待接收PK主播方同意,同意后,改變自己推流畫面UI,并播放接收PK主播拉流地址,并做混流處理。也有幾種拒絕狀態(tài):1.主播手動拒絕;2.請求超時;3.直播占線中;4.直播在PK中;5.主播在連麥中;6.主播PK功能關(guān)閉。

接收PK主播方:接收PK請求,同意后發(fā)送自己低鏈路拉流地址給發(fā)起PK主播,并改變自己推流UI和播放發(fā)起PK主播低鏈路拉流地址的小窗口,并要做好混流處理。

雙方普通觀眾方:普通觀眾基本不要做什么,播放的是混流地址。

禮物展會層

禮物展示層主要展示禮物特效。這一塊涉及到即時通訊、禮物編碼設(shè)計和支付功能(內(nèi)購)。在容我三思而后作。

拓展

重復(fù)登錄

被踢方:收到重復(fù)登錄回調(diào),要么殺死app,要么通知直播模塊底層控制器。獲取導(dǎo)航欄控制器數(shù)組最后一個控制器(當(dāng)前控制器),回退至根控制器。
登陸方:一進(jìn)入直播模塊就獲取主播信息,如果是正在直播狀態(tài),就彈出是否繼續(xù)直播提示框。是就直接跳轉(zhuǎn)直播推流畫面。

結(jié)語

· 直播還有很多知識點,這只是冰山中的一角。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要探討人工智能相關(guān)技術(shù)在大微映畫公司直播業(yè)務(wù)中的應(yīng)用場景。 AI+直播應(yīng)用場景一:直播內(nèi)容審核 內(nèi)容審核難點...
    shenciyou閱讀 3,608評論 0 6
  • 非常感謝大家利用自己寶貴的時間來閱讀我的文章 , 這篇文章主要寫一個iOS系統(tǒng)直播連麥功能的實現(xiàn) ,如果你正好需要...
    筱貳筆閱讀 7,514評論 0 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,063評論 25 709
  • 《我,一個人生活》 個人理財當(dāng)中 80%是行為,只有 20%是各種知識和算計。上面的內(nèi)容,百分比也好,復(fù)利計算也好...
    琳小喵閱讀 166評論 0 0
  • 上一章:余笙,卿多多指教(12)目錄:余笙,卿多多指教目錄 A市不能惹的人之一,顧言卿。 傳聞中他之前是黑道背景,...
    墨闌閱讀 426評論 0 2

友情鏈接更多精彩內(nèi)容