互动直播 Android Demo 源码导读

工程概述

在线互动 Demo 是网易云通信的一款针对目前市场比较热门的互动直播解决方案。在方案中结合了网易云通信 IM 能力的聊天室模型和网易云通信的音视频能力的多人会议模型。在使用本解决方案之前请务必了解聊天室和多人会议能力。

总体逻辑

互动直播的总体逻辑如下:

由于聊天室和多人会议都不是直接针对直播的方案模型,所以需要在应用上层补充一些控制指令来保证直播业务逻辑。 控制指令分为两套:

点对点系统通知

参数 说明
type 自定义系统通知类型:加入连麦队列通知 PushMicNotificationType#JOIN_QUEUE
roomid 房间ID 聊天室ID
style 网络通话类型 AVChatType枚举
info 进入聊天队列用户信息 {"nick" : "","avatar" : ""} 字典
参数 说明
type 自定义系统通知类型:退出连麦队列通知 PushMicNotificationType#EXIT_QUEUE
roomid 房间ID 聊天室ID
参数 说明
type 自定义系统通知类型:主播同意连麦通知 PushMicNotificationType#CONNECTING_MIC
roomid 房间ID 聊天室ID
style 连麦者连麦方式 AVChatType枚举

当连麦者收到主播同意连麦通知时,会检查自身的连麦状态,如果连麦状态过期则需要发送一条拒绝消息告诉主播

参数 说明
type 自定义系统通知类型:连麦者拒绝连麦通知 PushMicNotificationType#REJECT_CONNECTING
roomid 房间ID 聊天室ID
参数 说明
type 自定义系统通知类型:主播强制连麦者断开 PushMicNotificationType#DISCONNECT_MIC
roomid 房间ID 聊天室ID

聊天室广播消息

参数 说明
uid 连麦者的 accid
nick 连麦者的昵称
avatar 连麦者的头像
style 连麦者的连麦方式
参数 说明
uid 连麦者的 accid

源码分析

工程结构说明

源码主要分成四个 package :base、im、thirdparty 和 entertainment。

下面具体介绍 entertainment 包下的子包结构:

重点类说明

滤镜模块

从3.9.0版本sdk开始,sdk提供滤镜模块,用于实现对主播和连麦者的视频画面进行美颜、水印等,sdk提供的滤镜模块要求 Android 4.3 以上版本,用户也可以集成第三方视频数据处理的sdk,最低支持到 Android 4.1。