超大房间直播互动

更新时间: 2023/05/10 08:55:45

本文介绍如何通过 NERoom 实现超大房间直播互动,满足体育赛事直播、秀场直播、企业大型会议、在线教育等用户数上千或上万的应用场景。

应用场景

  • 体育赛事直播:主播创建房间直播世界杯等体育赛事,球迷们加入直播间一起观赛,边看边聊。用户可以举手上麦,与房间内其他上麦的观众进行实时的语音聊天,而其他不上麦的观众可以观看并收听麦上用户之间的交流,并通过文字、表情等形式对比赛进行点评和互动。
  • KOL 秀场直播:随着网红经济持续火爆,网红大 V 直播间的观众人数常常超过百万。NERoom 超大房间直播能力,助力您快速搭建属于自己的娱乐社交平台。
  • 企业大型会议:企业年会、培训大会、学术研讨会等企业大型会议的场景中,需要发言的用户可以举手上麦,与主持人进行实时语音聊天。
  • 互动大班课: 老师创建课堂进行线上教学,成千上万学生在线观看,学生通过连麦与老师互动,让课堂互动畅通无阻。主要用于 K12 教育、留学语言培训、职业技能培训、公考求职、兴趣培养等线上互动教学场景。

使用限制

功能 限制
连麦观众人数 50人
普通观众人数 无限制
收发消息 支持
音视频互动 支持

前提条件

开通 NERoom 房间组件,并且绑定互动直播模板。

功能原理

超大房间原理图.png

原理说明如下:

  • 用户加入 NERoom 房间时,设置用户的角色是连麦观众或普通观众。
  • 连麦观众通过 RTC 进行音视频互动。
  • 普通观众支持消息互动,通过播放器拉流观看主播和麦上观众的视频。
  • 普通观众进出房间事件通过 onReceiveChatroomMessages 回调中的 NERoomChatNotificationMessage 消息来通知,NERoom 服务器不再管理普通成员的成员列表,将成员列表完全托管给聊天室,以此来节省开支。
  • 如果需要获取普通观众的成员列表,请通过 NERoomChatController 中的 fetchChatroomMembers 接口来获取。

时序图

主播创建并加入大房间

uml diagram

普通观众加入并切换到连麦观众

uml diagram

连麦观众加入并切换到普通观众

uml diagram

实现方法

  1. 创建房间时,设置房间属性为直播场景。

    调用NERoomService.createRoom接口创建房间,将NECreateRoomParams.roomProfile参数设置为 LIVE_BROADCASTING直播场景,该场景中支持超大房间。

  2. 加入房间。

    • 主播调用 joinRoom 接口加入房间,并将用户角色 NEJoinRoomParams.role 设置为 host

    • 麦上观众调用 joinRoom 接口加入房间,并将用户角色 NEJoinRoomParams.role 设置为 audience

    • 普通观众调用 joinRoom 接口加入房间,并将用户角色 NEJoinRoomParams.role 设置为 NERoomBuiltinRole.Observer

  3. 观众角色切换。

    调用changeMemberRole接口,实现普通观众和麦上观众的角色切换。角色切换成功后,本端触发onMemberRoleChanged 回调。

    • 从麦上观众切换为普通观众时,远端用户触发 onUserLeaved 回调。
    • 从普通观众切换为麦上观众时,远端用户触发 onUserJoined 回调。

示例代码

    // 创建直播大房间
    NECreateRoomParams params = new NECreateRoomParams("123", "直播房测试", templateId, null, null, new HashMap(), NERoomProfile.LIVE_BROADCASTING);
    NERoomKit.getInstance().getRoomService().createRoom(params, null, callback);
    
    // 主播加入
    NEJoinRoomParams joinParams = new NEJoinRoomParams("123", "主播", null, "host", null, new HashMap());
    NERoomKit.getInstance().getRoomService().joinRoom(joinParams, callback);
    
    // 普通观众加入
    NEJoinRoomParams joinParams = new NEJoinRoomParams("123", "普通观众", null, NERoomBuiltinRole.Observer, null, new HashMap());
    NERoomKit.getInstance().getRoomService().joinRoom(joinParams, callback);
    
    // 连麦观众加入
    NEJoinRoomParams joinParams = new NEJoinRoomParams("123", "连麦观众", null, "audience", null, new HashMap());
    NERoomKit.getInstance().getRoomService().joinRoom(joinParams, callback);
    
    // 普通观众切换到连麦观众
    roomContext.changeMemberRole(userUuid, "audience");
    
    // 连麦观众切换到普通观众
    roomContext.changeMemberRole(userUuid, NERoomBuiltinRole.Observer);
此文档是否对你有帮助?
有帮助
去反馈
  • 应用场景
  • 使用限制
  • 前提条件
  • 功能原理
  • 实现方法
  • 示例代码