From cd1f274644838ebba37394ba021dd25df3571357 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 5 Sep 2024 13:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9F=E6=B0=B8=E4=B9=85=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 9 ++++----- src/utils/package/agora.ts | 34 ++++++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 0435239..9fcb18b 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -434,9 +434,9 @@ const Meeting: React.FC = () => { if (userInfo.roleId !== '1') { let userId = item.watchUids.find((uid: any) => uid === userInfo.uid) if (userId) { - await agora.allJoinChannelEx() + agora.updateChannelMediaOptionsEx(true) } else { - await agora.allLeaveChannelEx() + agora.updateChannelMediaOptionsEx(false) } } break; @@ -567,10 +567,9 @@ const Meeting: React.FC = () => { screenShareId: userInfo.screenShareId, token: state.token, tokenA: state.tokenA, + roleId: userInfo.roleId, }) - if (userInfo.roleId === '1') { - await agora.allJoinChannelEx(true) - } + await agora.allJoinChannelEx(false) } // 状态更新 const changeAgoraDevice = () => { diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index be6d7b3..5678e10 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -17,6 +17,7 @@ const option: any = { channelId: '', uid: '', screenShareId: '', + roleId: '2', } let rtcEngine: any = ''; export const agora = { @@ -238,24 +239,44 @@ export const agora = { ); }, // 所有用户加入的第二个房间 - allJoinChannelEx: async (bool: boolean = false) => { - await agora.startCameraCapture() + allJoinChannelEx: async (bool: boolean) => { await rtcEngine.joinChannelEx( option.tokenA, { channelId: option.channelId + 'a', localUid: Number('1' + option.screenShareId) }, { - clientRoleType: bool ? ClientRoleType.ClientRoleAudience : ClientRoleType.ClientRoleBroadcaster, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 + + } + ); + agora.updateChannelMediaOptionsEx(bool) + }, + // 更新第二个房间配置 + updateChannelMediaOptionsEx: async (bool: boolean) => { + let obj; + if (bool) { + await agora.startCameraCapture() + obj = { + clientRoleType: ClientRoleType.ClientRoleBroadcaster, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 autoSubscribeAudio: false,//设置是否自动订阅所有音频流 - autoSubscribeVideo: true,//设置是否自动订阅所有视频流 + autoSubscribeVideo: false,//设置是否自动订阅所有视频流 publishMicrophoneTrack: false,//设置是否发布麦克风采集到的音频 publishCameraTrack: true,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 } - ); + } else { + await agora.stopCameraCapture(); + obj = { + clientRoleType: ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 + autoSubscribeAudio: false,//设置是否自动订阅所有音频流 + autoSubscribeVideo: option.roleId === '1',//设置是否自动订阅所有视频流 + publishMicrophoneTrack: false,//设置是否发布麦克风采集到的音频 + publishCameraTrack: false,//设置是否发布摄像头采集的视频 + publishScreenTrack: false,//设置是否发布屏幕采集的视频 + } + } + await rtcEngine.updateChannelMediaOptionsEx(obj, { channelId: option.channelId + 'a', localUid: Number('1' + option.screenShareId) }) }, // 退出第二个房间 allLeaveChannelEx: async () => { - await agora.stopCameraCapture(); await rtcEngine.leaveChannelEx({ channelId: option.channelId + 'a', localUid: Number('1' + option.screenShareId) }) }, // ai降噪 @@ -300,6 +321,7 @@ export const agora = { option.channelId = data.channelId; option.uid = Number(data.uid); option.screenShareId = data.screenShareId; + option.roleId = data.roleId; await agora.joinChannel() }, // 桌面捕获音频和视频的媒体源的信息