互动直播 iOS 源码导读
概述
互动直播是网易云通信的一款针对目前市场比较热门的直播解决方案。在方案中结合了网易云通信 IM 能力的聊天室模型和网易云通信音视频能力的互动直播模型。在使用本解决方案之前请务必了解聊天室和互动直播能力。
旁路直播的逻辑
- 主播向互动直播Demo服务器申请推流地址,观众通过Demo服务器获取拉流地址。
- 主播开始直播(在多人会议中推流),观众可以观看(用播放器拉流)。
- 观众申请连麦,主播端显示连麦队列。
- 主播选择连麦队列中的某一个观众,观众结束播放器拉流并进入主播的多人会议。此时旁路直播自动开启,其他观众会看到主播和连麦观众合并的画面;主播和连麦观众和收到对方的画面数据,用特定控件(NTESGLView)渲染显示。
- 主播结束连麦,连麦观众自动退出多人会议,并开启播放器进行拉流操作。
由于聊天室和多人会议都不是直接针对直播的方案模型,所以需要在应用上层补充一些控制指令来保证直播业务逻辑。 控制指令分为两套:
- 点对点自定义系统通知,用于主播和连麦者的控制交互,用于保证连麦者的上下麦时机。
- 聊天室广播消息,用于全局通知所有观众当前的连麦状态,观众需要根据连麦状态显示或隐藏一些控件。
点对点系统通知
进入麦序队列
参数 | 说明 | 值 |
---|---|---|
type | 自定义系统通知类型:加入连麦队列通知 | NTESLiveCustomNotificationTypePushMic |
roomid | 房间ID | 聊天室ID |
style | 网络通话类型 | NIMNetCallType枚举 |
info | 进入聊天队列用户信息 | {"nick" : "","avatar" : ""} 字典 |
退出麦序队列
参数 | 说明 | 值 |
---|---|---|
type | 自定义系统通知类型:退出连麦队列通知 | NTESLiveCustomNotificationTypePopMic |
roomid | 房间ID | 聊天室ID |
主播同意连麦
参数 | 说明 | 值 |
---|---|---|
type | 自定义系统通知类型:主播同意连麦通知 | NTESLiveCustomNotificationTypeAgreeConnectMic |
roomid | 房间ID | 聊天室ID |
style | 连麦者连麦方式 | NIMNetCallType枚举 |
连麦者拒绝连麦
当连麦者受到主播同意连麦通知时,会检查自身的连麦状态,如果连麦状态过期则需要发送一条拒绝消息告诉主播
参数 | 说明 | 值 |
---|---|---|
type | 自定义系统通知类型:连麦者拒绝连麦通知 | NTESLiveCustomNotificationTypeRejectAgree |
roomid | 房间ID | 聊天室ID |
主播强制连麦者断开
参数 | 说明 | 值 |
---|---|---|
type | 自定义系统通知类型:主播强制连麦者断开 | NTESLiveCustomNotificationTypeForceDisconnect |
roomid | 房间ID | 聊天室ID |
聊天室广播消息
连麦者已连麦
参数 | 说明 |
---|---|
uid | 连麦者的 accid |
nick | 连麦者的昵称 |
avatar | 连麦者的头像 |
style | 连麦者的连麦方式 |
连麦者已断开
参数 | 说明 |
---|---|
uid | 连麦者的 accid |
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×