From 96d17e21a0ccb04d5bdac1e29075af35a7076627 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Tue, 10 Sep 2024 13:50:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B1=E4=BA=AB=E5=B1=8F=E5=B9=95=E5=9C=A8?= =?UTF-8?q?=E6=9C=AA=E8=A7=82=E7=9C=8B=E6=97=B6=E4=B8=8D=E6=8E=A5=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 16 +++++++++++++++- src/utils/package/agora.ts | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 598a1c8..260d763 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -260,6 +260,19 @@ const Meeting: React.FC = () => { }); }, [currentVideoId, roomUserList]); + useEffect(() => { + let item = roomUserList.find((item: any) => currentVideoId == item.uid) + if (item) { + if (isShare) { + if (Number(item.screenShareId) === Number(isShare)) { + agora.muteRemoteAudioStream(Number(isShare), false) + } else { + agora.muteRemoteAudioStream(Number(isShare), true) + } + } + } + }, [currentVideoId, isShare]); + useEffect(() => { onSignalr(async (item: any) => { const setting = JSON.parse(storage.getItem('setting') as string) @@ -1082,7 +1095,8 @@ const Meeting: React.FC = () => { // 获取桌面可共享屏幕的引用 const getDesktopCapturerVideo = (): void => { agora.getDesktopCapturerVideo({ width: 300, height: 300 }, { width: 300, height: 300 }, true).then((res: any) => { - res.forEach((item: any) => { + res.forEach((item: any, index: number) => { + item.sourceTitle = '桌面' + (index + 1) if (item.thumbImage.buffer) { item.thumbnailUrl = thumbImageBufferToBase64(item.thumbImage) } diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index 1625f51..e2748df 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -291,8 +291,13 @@ export const agora = { await agora.stopCameraCapture(); await rtcEngine.leaveChannelEx({ channelId: option.channelId + 'a', localUid: Number('1' + option.screenShareId) }) }, + // 取消或恢复订阅指定远端用户的音频流 + muteRemoteAudioStream: async (uid: number, mute: boolean) => { + rtcEngine.muteRemoteAudioStream(uid, mute) + }, + // 销毁视频渲染dom destroyRendererByConfig: async (uid: number) => { - rtcEngine.destroyRendererByConfig(VideoSourceType.VideoSourceRemote, option.channelId + 'a', uid); + await rtcEngine.destroyRendererByConfig(VideoSourceType.VideoSourceRemote, option.channelId + 'a', uid); }, // ai降噪 setAINSMode: async (enabled: boolean, mode: AudioAinsMode) => {