同房间连麦
同房间连麦是指让已加入直播房间中的观众切换为主播身份,并参与直播。
观众上麦(升级为主播房间)
使用 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 实例后,需要同步按需调用房间事件监听器或质量数据监听器。上麦成功后,用户身份与主播并无区别,可进行与主播同等的接口调用。详见主播端。
观众下麦(降级为观众房间)
-
在降级前请释放摄像头资源。
-
使用
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
:房间内主播列表
降级为观众房间后的方式详见观众端。
-
如果 SDK 版本 < 5.2.3,降级成功后需同步注册观众房间事件监听器。
订阅 liveUrl
资源的观众如何参与连麦
如果观众不加入 RTC 房间,直接通过订阅 liveUrl
观看直播,参与连麦的流程如下:
- 使用初始化时获取的 RCRTCClient 实例的 joinLivingRoom 方法加入 RTC 房间。加入成功后,该用户即具备主播身份。
- 获取资源,并以主播角色发布资源、订阅资源。详见主播端
- 如果连麦结束,使用 RCRTCClient 实例的
leaveRoom
方法下麦。