跳到主要内容

同房间连麦

同房间连麦是指让已加入直播房间中的观众切换为主播身份,并参与直播。

观众上麦(升级为主播房间)

使用 RCRTClient 实例的 upgradeToAnchorRoom 方法,传入当前观众用户的 RCAudienceLivingRoom 实例,SDK 会返回主播角色的房间 RCLivingRoom 实例。

/*
* @param audienceRoom 观众房间 room 实例,调用 rtcClient.joinLivingRoomAsAudience 或 rtcClient.downgradeToAudienceRoom 方法返回的 room
* @since @rongcloud/plugin-rtc@5.6.8 增加返回 userIds, tracks, CDNEnable,房间内已有的人员、资源、CDN 状态不再从 room 监听处抛出
* @return userIds 返回加房间时,房间内的其他人
* @return tracks 返回加房间时,房间内其他人发布的资源
* @return CDNEnable 返回加房间时,房间内 CDN 开关是否开启
*/
const { room: anchorRoom, code, userIds, tracks, CDNEnable } = await rtcClient.upgradeToAnchorRoom(audienceRoom)
// 若升级失败, anchorRoom 为 undefined
if (code !== RCRTCCode.SUCCESS) {
console.log('upgrade failed:', code)
}

RCAudienceLivingRoom 实例升级为主播房间 RCLivingRoom 实例后,需要同步按需调用房间事件监听器或质量数据监听器。上麦成功后,用户身份与主播并无区别,可进行与主播同等的接口调用。详见主播端

观众下麦(降级为观众房间)

  1. 在降级前请释放摄像头资源。

  2. 使用 RCRTClient 实例的 downgradeToAudienceRoom 方法,传入当前主播用户的 RCLivingRoom 实例,SDK 会返回观众角色的房间 RCAudienceLivingRoom 实例。

    /*
    * 使用场景为主播降级观众
    * @param anchorRoom 主播加入房间成功后返回的 room
    */
    // 从 5.2.3 开始,加入房间时可返回 RTCTracks、MCUTracks、CDNUris、userIds
    const { room: audienceRoom, RTCTracks, MCUTracks, CDNUris, userIds, code } = await rtcClient.downgradeToAudienceRoom(anchorRoom)
    // 若降级失败,会返回 code, room 为 undefined
    if (code !== RCRTCCode.SUCCESS) {
    console.log('downgrade failed:', code)
    }

    从 5.2.3 版本开始,downgradeToAudienceRoom方法会返回以下房间内数据:

    • RTCTracks:房间内已有的主播资源
    • MCUTracks:房间内已有的合流资源
    • CDNUris:房间内置 CDN 信息
    • userIds:房间内主播列表

    降级为观众房间后的方式详见观众端

  3. 如果 SDK 版本 < 5.2.3,降级成功后需同步注册观众房间事件监听器。

订阅 liveUrl 资源的观众如何参与连麦

如果观众不加入 RTC 房间,直接通过订阅 liveUrl 观看直播,参与连麦的流程如下:

  1. 使用初始化时获取的 RCRTCClient 实例的 joinLivingRoom 方法加入 RTC 房间。加入成功后,该用户即具备主播身份。
  2. 获取资源,并以主播角色发布资源、订阅资源。详见主播端
  3. 如果连麦结束,使用 RCRTCClient 实例的 leaveRoom 方法下麦。