跨房通话
默认情况下,不同房间的音视频流是相互隔离的,只有同一房间内的用户才能进行音视频通信。跨房通话功能允许不同房间的用户之间进行音视频通信。
在直播场景中,该功能支持主播之间的通信,并允许两个房间的观众观看另一位主播。本文档介绍如何使用 CrossRoom 插件实现跨房通话。
跨房通话支持两种模式:
房间级连接:与目标房间的所有主播建立连接。
用户级连接:与目标房间的指定主播建立连接。
工作原理
房间级连接:将当前房间内所有主播的音视频流推送到目标房间,并将目标房间内所有主播的音视频流推送到当前房间。
用户级连接:将当前房间中您的音视频流推送到目标房间,并将目标房间中指定主播的音视频流推送到当前房间。
使用步骤
注意:
请确保您的 SDK 版本 ≥ v5.8.0。
1. 开启跨房通话
import { CrossRoom } from 'trtc-sdk-v5/plugins/cross-room';const trtc = TRTC.create({ plugins: [CrossRoom] });await trtc.enterRoom({ sdkAppId, userId: 'user1', userSig, roomId: 7777 });// 将房间 7777 中的 user1 与房间 8888 中的 user2 连接。// user2 的流将被推送到房间 7777,user1 的流将被推送到房间 8888。await trtc.startPlugin('CrossRoom', {roomId: 8888,// 选择 roomId 或 strRoomId// strRoomId: '8888'userId: 'user2' // 如果不提供,表示房间级跨房通话});
参数说明
参数名 | 类型 | 必填 | 说明 |
roomId | Number | 否 | 目标房间 ID。 |
strRoomId | String | 否 | 目标房间字符串类型 ID, roomId 和 strRoomId 二选一。 |
userId | String | 否 | 目标房间的主播 ID。如果不提供,表示房间级连接。 |
2. 更新跨房主播的静音状态
开启跨房通话后,目标房间主播的流将被推送到当前房间,当前房间内的所有用户都可以收到该主播的音视频流。
您可以通过以下接口限制当前房间中跨房主播的上行能力(音频/主路视频/辅路视频),该限制对房间内所有用户生效。
如果禁用了某项上行能力,当前房间的用户将无法接收或订阅对应的音视频流。
await trtc.updatePlugin('CrossRoom', {updateList: [{roomId: 8888,// strRoomId: '8888'userId: 'user2', // 如果不提供,表示房间级跨房通话muteAudio: true,muteVideo: false,muteSubStream: false,}]});
参数说明
参数名 | 类型 | 必填 | 说明 |
updateList | Array | 是 | 需要更新静音状态的跨房主播列表。 |
updateList[0].roomId | Number | 否 | 目标房间 ID。 |
updateList[0].strRoomId | String | 否 | 目标房间字符串类型 ID,roomId 和 strRoomId 二选一。 |
updateList[0].userId | String | 否 | 目标房间的主播 ID。如果不提供,表示房间级连接。 |
updateList[0].muteAudio | Boolean | 否 | 是否停止来自目标房间的跨房主播音频流。 |
updateList[0].muteVideo | Boolean | 否 | 是否停止来自目标房间的跨房主播主路视频流。 |
updateList[0].muteSubStream | Boolean | 否 | 是否停止来自目标房间的跨房主播辅路视频流。 |
3. 停止跨房通话
await trtc.stopPlugin('CrossRoom', { roomId: 8888 }); // 停止与指定房间的跨房通话await trtc.stopPlugin('CrossRoom'); // 停止当前用户发起的全部跨房通话
参数说明
参数名 | 类型 | 必填 | 说明 |
roomId | Number | 否 | 目标房间 ID。 |
strRoomId | String | 否 | 目标房间字符串类型 ID, roomId 和 strRoomId 二选一。 |
