基本操作
创建/加入房间
调用 RCRTCClient
实例的加入房间方法可以加入音视频房间。如果该房间之前不存在,则会在调用时自动创建并加入。以下示例中的 rtcClient
为 RTCLib SDK 初始化时获取的 RCRTCClient
实例。
提示
每个房间在创建之初,会由融云服务生成一个在用户全网唯一的 SessionId,可用于后台业务查询或与融云进行问题沟通。当房间内的所有人退出或被服务器判定掉线后,此 Session 结束。之后即便再用相同的 RoomId 创建房间,SessionId 也会更新为不同值。
会议模式下,使用 RCRTCClient
实例的方法 joinRTCRoom 加入 RTC 会议房间。加入房间成功后,会返回 RCRTCRoom 房间实例、房间内其他用户 ID,以及房间内已发布的资源。
// 加入普通音视频房间,从 5.0.7 开始增加返回 `tracks` 与 `userIds`
// * userIds - 当前已加入房间的远端人员列表
// * tracks - 当前已发布至房间内的远端资源列表
const { code, room, userIds, tracks: remoteTracks } = await rtcClient.joinRTCRoom('roomId')
// 若加入失败,则 room、userIds、tracks 值为 undefined
if (code !== RCRTCCode.SUCCESS) {
console.log('join living room failed:', code)
return
}
直播模式下,您需要根据用户当前角色使用不同处理方式。直播房间的媒体类型(音频/音视频)以第一个加入房间用户设置的为准.
-
主播角色:使用
RCRTCClient
实例的 joinLivingRoom 方法加入 RTC 直播房间。加入房间成功后可获取 RCLivingRoom 房间实例。// 获取 RCLivingType 枚举定义
import { RCLivingType } from '@rongcloud/plugin-rtc'
/**
* 主播加入直播房间或观众上麦场景调用,观众上麦之前需先取消已订阅的直播间资源
* 从 5.0.7 开始增加返回 `tracks` 与 `userIds`
* userIds - 当前已加入房间的主播人员列表
* tracks - 当前已发 布至房间内的其他主播资源
* 5.3.2 新增返回 PKRoomIds,为房间内已连麦的副房间 roomId 列表
* @param roomId 房间 Id
* @param livingType 直播类型
* * 当 `livingType` 值为 `RCLivingType.AUDIO` 时表示开始音频直播
* * 当 `livingType` 值为 `RCLivingType.VIDEO` 时表示开始音视频直播
*/
const { code, room, userIds, tracks: remoteTracks, PKRoomIds: string[] } = await rtcClient.joinLivingRoom('roomId', RCLivingType.VIDEO)å
// 若加入失败,则 room、userIds、tracks 值为 undefined
if (code !== RCRTCCode.SUCCESS) {
console.log('join room failed:', code)
return
} -
观众角色:使用
RCRTCClient
实例的 joinLivingRoomAsAudience 方法加入 RTC 直播房间。加入房间成功后可获取 RCAudienceLivingRoom 房间实例。// 获取 RCLivingType 枚举定义
import { RCLivingType } from '@rongcloud/plugin-rtc'
/*
* 观众加入直播房间调用
* @param roomId 房间 Id
* @param livingType 直播类型
* * 当 `livingType` 值为 `RCLivingType.AUDIO` 是表示音频直播
* * 当 `livingType` 值为 `RCLivingType.AUDIO_VIDEO` 是表示音视频直播
*/
// 从 5.2.3 开始,加入房间时可返回 RTCTracks、MCUTracks、CDNUris、userIds
const { room: audienceRoom, RTCTracks, MCUTracks, CDNUris, userIds, code } = await rtcClient.joinLivingRoomAsAudience('roomId', RCLivingType.AUDIO_VIDEO)
// 若加入失败,则 room 值为 undefined
if (code !== RCRTCCode.SUCCESS) {
console.log('join room as audience failed:', code)
}