- 最近開發(fā)了一個(gè)互動(dòng)直播的項(xiàng)目譬淳。就其中的邏輯部分進(jìn)行一個(gè)梳理掀亥。項(xiàng)目地址和邏輯圖如下。
非連麥
1.流程
- 進(jìn)入聊天室
NIMChatroom
- 用拉流播放器加載
拉流Url
進(jìn)行播放(這種方式的播放延遲較高)。 - 退出聊天室
NIMChatroom
2.行為
- 聊天/發(fā)送禮物等行為均通過
[NIMSDK sharedSDK].chatroomManager
在在當(dāng)前NIMChatroom
發(fā)送與監(jiān)聽系統(tǒng)/自定義消息。 - 直播的狀態(tài)變更(如直播結(jié)束)觅闽。直播間的狀態(tài)由主播進(jìn)行維護(hù)。非主播則通過
[NIMSDK sharedSDK].chatroomManager
對直播間狀態(tài)進(jìn)行監(jiān)聽與更新挽牢。
連麥
- 流程
- 主播一開始直播需創(chuàng)建并加入
NIMNetCallMeeting
- 連麥者在申請連麥并被允許后進(jìn)入
NIMNetCallMeeting
- 在連麥情況下不需要
拉流Url
進(jìn)行播放谱煤。僅需展示自己的本地攝像頭畫面
與[NIMAVChatSDK sharedSDK].netCallManager
的- (void)onRemoteYUVReady:(NSData *)yuvData width:(NSUInteger)width height:(NSUInteger)height from:(NSString *)user
方法獲得的數(shù)據(jù)
- 主播一開始直播需創(chuàng)建并加入
- 行為
- 用戶的進(jìn)入與退出通過監(jiān)聽
[NIMAVChatSDK sharedSDK].netCallManager
的onUserJoined
和onUserLeft
方法進(jìn)行
- 用戶的進(jìn)入與退出通過監(jiān)聽
總結(jié)
- 這里只講了大致的流程許多細(xì)節(jié)并未講清。整個(gè)邏輯梳理的難點(diǎn)在于對于
NIMNetCallMeeting
和NIMChatroom
兩者的理解禽拔。 - 其實(shí)只需記住直播間里面的所有角色都在
NIMChatroom
中刘离,而主播
與連麥者
同時(shí)在NIMNetCallMeeting
和NIMChatroom
中。 - 想確定一個(gè)行為是通過那個(gè)渠道進(jìn)行的睹栖。
- 判斷受眾硫惕,若這個(gè)行為的參與者不僅僅包涵主播與連麥者。(如監(jiān)聽直播間的狀態(tài)普通觀眾也要監(jiān)聽)則該行為走的是
NIMChatroom
- 判斷受眾硫惕,若這個(gè)行為的參與者不僅僅包涵主播與連麥者。(如監(jiān)聽直播間的狀態(tài)普通觀眾也要監(jiān)聽)則該行為走的是