Feedback

跨房通话

默认情况下,不同房间的音视频流是相互隔离的,只有同一房间内的用户才能进行音视频通信。跨房通话功能允许不同房间的用户之间进行音视频通信。
在直播场景中,该功能支持主播之间的通信,并允许两个房间的观众观看另一位主播。本文档介绍如何使用 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 二选一。