互动直播逻辑梳理

  • 最近开发了一个互动直播的项目。就其中的逻辑部分进行一个梳理。项目地址和逻辑图如下。
逻辑图

非连麦

1.流程

  • 进入聊天室NIMChatroom
  • 用拉流播放器加载拉流Url进行播放(这种方式的播放延迟较高)。
  • 退出聊天室NIMChatroom

2.行为

  • 聊天/发送礼物等行为均通过[NIMSDK sharedSDK].chatroomManager在在当前NIMChatroom发送与监听系统/自定义消息。
  • 直播的状态变更(如直播结束)。直播间的状态由主播进行维护。非主播则通过[NIMSDK sharedSDK].chatroomManager对直播间状态进行监听与更新。

连麦

  1. 流程
    • 主播一开始直播需创建并加入NIMNetCallMeeting
    • 连麦者在申请连麦并被允许后进入NIMNetCallMeeting
    • 在连麦情况下不需要拉流Url进行播放。仅需展示自己的本地摄像头画面[NIMAVChatSDK sharedSDK].netCallManager- (void)onRemoteYUVReady:(NSData *)yuvData width:(NSUInteger)width height:(NSUInteger)height from:(NSString *)user方法获得的数据
  2. 行为
    • 用户的进入与退出通过监听[NIMAVChatSDK sharedSDK].netCallManageronUserJoinedonUserLeft方法进行

总结

  • 这里只讲了大致的流程许多细节并未讲清。整个逻辑梳理的难点在于对于NIMNetCallMeetingNIMChatroom两者的理解。
  • 其实只需记住直播间里面的所有角色都在NIMChatroom中,而主播连麦者同时在NIMNetCallMeetingNIMChatroom中。
  • 想确定一个行为是通过那个渠道进行的。
    1. 判断受众,若这个行为的参与者不仅仅包涵主播与连麦者。(如监听直播间的状态普通观众也要监听)则该行为走的是NIMChatroom

你可能感兴趣的:(互动直播逻辑梳理)