跳到主要内容

基本操作

创建/加入房间

调用 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)
    }

获取房间数据

会议模式下,加入房间成功后可获取 RCRTCRoom 实例。直播模式下,主播角色用户加入房间成功后可获取 RCLivingRoom 房间实例。

RCRTCRoomRCLivingRoom 实例上提供以下获取资源与数据的方法:

方法返回值类型说明
getRoomId()String返回房间 ID。
getSessionId()String返回房间的 Session ID。重新加入房间时,该 ID 会重置。
getLocalTracks()RCLocalTrack[]返回已发布资源列表(从 RTCLib 5.0.5 开始支持)。
getRemoteUserIds()string[]返回房间中已存在的远端用户列表,不包含本端 userId
getRemoteTracks()RCRemoteTrack[]返回远端发布的所有资源列表(从 RTCLib 5.0.7 开始支持)。
getRemoteTracksByUserId()RCRemoteTrack[]返回指定用户在房间内发布的资源列表(从 RTCLib 5.0.7 开始支持)。

在直播模式下,观众角色用户加入房间成功后返回 RCAudienceLivingRoom 房间实例。观众可以使用 RCAudienceLivingRoom 房间实例获取观众专用部分资源及数据。

方法返回值类型说明
getRoomId()String返回房间 ID。
getSessionId()String返回房间的 Session ID。重新加入房间时,该 ID 会重置。
getRemoteUserIds()string[]返回房间中已存在的主播角色用户列表,不包含本端 userId。
getRemoteTracks()RCRemoteTrack[]返回远端发布的所有资源列表(从 RTCLib 5.0.7 开始支持)。
getRemoteTracksByUserId()RCRemoteTrack[]返回指定用户在房间内发布的资源列表(从 RTCLib 5.0.7 开始支持)。在直播模式下,返回的列表中既包含分流也包含服务端合流。
getRemoteRTCTracks()RCRemoteTrack[]返回房间内远端主播角色用户发布的所有分流资源列表(从 RTCLib 5.2.3 开始支持)。
getRemoteMCUTracks()RCRemoteTrack[]返回房间内远端主播角色用户发布的所有合流资源列表(从 RTCLib 5.2.3 开始支持)。

离开房间

会议模式下的所有参会人员使用 leaveRoom 方法退出房间。直播模式下主播角色用户也使用相同方法退出房间。

const { code } = await rtcClient.leaveRoom(room)

在直播模式下,观众角色的用户必须使用 leaveLivingRoomAsAudience 方法退出房间。

/*
* @param audienceRoom 观众加入直播房间返回的 room
*/
const { code } = await rtcClient.leaveLivingRoomAsAudience(audienceRoom)
if (code !== RCRTCCode.SUCCESS) {
console.log('join room as audience failed:', code)
}