From 2777fad3ee5e8bf2cfd6927280ceeeec08f15e0f Mon Sep 17 00:00:00 2001 From: youngq Date: Mon, 23 Sep 2024 18:59:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=B3=E9=97=AD=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4=E4=BB=BB=E7=84=B6=E6=8E=A8=E6=B5=81bug=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=BB=9A=E5=8A=A8=E8=B6=85=E5=87=BA=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E8=8A=82=E7=9C=81=E6=B5=81=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/page/Meeting/index.tsx | 78 ++++++++++++++++++++------------------ src/utils/package/agora.ts | 18 ++++++--- 3 files changed, 55 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 4fe077f..4d59b29 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "WGShare.Metting", "private": true, - "version": "0.3.2", + "version": "0.3.5", "main": "main.js", "authors": "yj", "description": "智汇享", diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 11f36ed..0d72e1a 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -632,32 +632,34 @@ const Meeting: React.FC = () => { return () => clearTimeout(timer); }, [isClicked]); - // useEffect(() => { - // const elements = document.querySelectorAll('.intersectionObserver-view'); - // if (elements.length && currentVideoId) { - // elements.forEach(element => { - // observer?.unobserve(element); - // }); - // const observerObject = new IntersectionObserver(async (entries: IntersectionObserverEntry[], _observer: IntersectionObserver) => { - // entries.forEach(async (entry) => { - // if (entry.target.id !== user.uid) { - // await agora.muteRemoteVideoStreamEx(Number(entry.target.id), !entry.isIntersecting) - // } - // }); - // await agora.muteRemoteVideoStreamEx(Number(currentVideoId), false) - // }, { threshold: 0, root: document.getElementById('videoView') }); - // setObserver(observerObject) - // elements.forEach(element => { - // observerObject.observe(element); - // }); - // } - // return () => { - // elements.forEach(element => { - // observer?.unobserve(element); - // }); - // observer?.disconnect(); - // } - // }, [roomUserList, currentVideoId]); + useEffect(() => { + const elements = document.querySelectorAll('.intersectionObserver-view'); + if (elements.length && currentVideoId) { + elements.forEach(element => { + observer?.unobserve(element); + }); + const observerObject = new IntersectionObserver(async (entries: IntersectionObserverEntry[], _observer: IntersectionObserver) => { + entries.forEach(async (entry) => { + console.log(entry.isIntersecting,entry.target.id); + + if (entry.target.id !== user.uid) { + await agora.muteRemoteVideoStreamEx(Number(entry.target.id), !entry.isIntersecting) + } + }); + await agora.muteRemoteVideoStreamEx(Number(currentVideoId), false) + }, { threshold: 0, root: document.getElementById('videoView') }); + setObserver(observerObject) + elements.forEach(element => { + observerObject.observe(element); + }); + } + return () => { + elements.forEach(element => { + observer?.unobserve(element); + }); + observer?.disconnect(); + } + }, [roomUserList, currentVideoId,footerList]); // 声网初始化 const agoraInit = async () => { @@ -745,26 +747,28 @@ const Meeting: React.FC = () => { if (item.uid === userInfo.uid) { const footerListTemplate = [...footerList] await agora.getVideoDeviceManager().then(async (res) => { - if (res.list.length) { - footerListTemplate[0][1].title = item.enableCamera ? '关闭视频' : '开启视频' - footerListTemplate[0][1].active = !item.enableCamera - await agora.muteLocalVideoStream(!item.enableCamera) - } else { - footerListTemplate[0][1].title = '开启视频' - footerListTemplate[0][1].active = true - await agora.muteLocalVideoStream(true) - } + getUserRoomInfo().then(async (r) => { + if (res.list.length) { + footerListTemplate[0][1].title = item.enableCamera ? '关闭视频' : '开启视频' + footerListTemplate[0][1].active = !item.enableCamera + await agora.muteLocalVideoStream(r, item.enableMicr,item.enableCamera) + } else { + footerListTemplate[0][1].title = '开启视频' + footerListTemplate[0][1].active = true + await agora.muteLocalVideoStream(r, item.enableMicr,false) + } + }) }) await agora.getAudioMediaList().then(async (res) => { getUserRoomInfo().then(async (r) => { if (res.ecordingList.length) { footerListTemplate[0][0].title = item.enableMicr ? '静音' : '解除静音' footerListTemplate[0][0].active = !item.enableMicr - await agora.muteLocalAudioStream(r, item.enableMicr) + await agora.muteLocalAudioStream(r, item.enableMicr,item.enableCamera) } else { footerListTemplate[0][0].title = '解除静音' footerListTemplate[0][0].active = true - await agora.muteLocalAudioStream(r, false) + await agora.muteLocalAudioStream(r, false,item.enableCamera) } }) }) diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index a4a7c45..0e5c8fb 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -321,20 +321,28 @@ export const agora = { rtcEngine.enableLoopbackRecording(false) }, // 取消或恢复发布本地音频流 - muteLocalAudioStream: async (data: any, mute: any) => { + muteLocalAudioStream: async (data: any, publishMicrophoneTrack: boolean,publishCameraTrack:boolean) => { // await rtcEngine.muteLocalAudioStream(mute) await rtcEngine.updateChannelMediaOptions({ clientRoleType: data ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 autoSubscribeAudio: true,//设置是否自动订阅所有音频流 autoSubscribeVideo: true,//设置是否自动订阅所有视频流 - publishMicrophoneTrack: mute,//设置是否发布麦克风采集到的音频 - publishCameraTrack: true,//设置是否发布摄像头采集的视频 + publishMicrophoneTrack: publishMicrophoneTrack,//设置是否发布麦克风采集到的音频 + publishCameraTrack: publishCameraTrack,//设置是否发布摄像头采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频 }) }, // 取消或恢复发布本地视频流 - muteLocalVideoStream: async (mute: any) => { - await rtcEngine.muteLocalVideoStream(mute) + muteLocalVideoStream: async (data: any, publishMicrophoneTrack: boolean,publishCameraTrack:boolean) => { + // await rtcEngine.muteLocalVideoStream(mute) + await rtcEngine.updateChannelMediaOptions({ + clientRoleType: data ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 + autoSubscribeAudio: true,//设置是否自动订阅所有音频流 + autoSubscribeVideo: true,//设置是否自动订阅所有视频流 + publishMicrophoneTrack: publishMicrophoneTrack,//设置是否发布麦克风采集到的音频 + publishCameraTrack: publishCameraTrack,//设置是否发布摄像头采集的视频 + publishScreenTrack: false,//设置是否发布屏幕采集的视频 + }) }, // 摄像头采集 startCameraCapture: async (bool: boolean = false) => {