修复关闭摄像头任然推流bug

新增滚动超出页面,节省流量
This commit is contained in:
youngq 2024-09-23 18:59:13 +08:00
parent e06f908816
commit 2777fad3ee
3 changed files with 55 additions and 43 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "WGShare.Metting", "name": "WGShare.Metting",
"private": true, "private": true,
"version": "0.3.2", "version": "0.3.5",
"main": "main.js", "main": "main.js",
"authors": "yj", "authors": "yj",
"description": "智汇享", "description": "智汇享",

View File

@ -632,32 +632,34 @@ const Meeting: React.FC = () => {
return () => clearTimeout(timer); return () => clearTimeout(timer);
}, [isClicked]); }, [isClicked]);
// useEffect(() => { useEffect(() => {
// const elements = document.querySelectorAll('.intersectionObserver-view'); const elements = document.querySelectorAll('.intersectionObserver-view');
// if (elements.length && currentVideoId) { if (elements.length && currentVideoId) {
// elements.forEach(element => { elements.forEach(element => {
// observer?.unobserve(element); observer?.unobserve(element);
// }); });
// const observerObject = new IntersectionObserver(async (entries: IntersectionObserverEntry[], _observer: IntersectionObserver) => { const observerObject = new IntersectionObserver(async (entries: IntersectionObserverEntry[], _observer: IntersectionObserver) => {
// entries.forEach(async (entry) => { entries.forEach(async (entry) => {
// if (entry.target.id !== user.uid) { console.log(entry.isIntersecting,entry.target.id);
// await agora.muteRemoteVideoStreamEx(Number(entry.target.id), !entry.isIntersecting)
// } 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) await agora.muteRemoteVideoStreamEx(Number(currentVideoId), false)
// elements.forEach(element => { }, { threshold: 0, root: document.getElementById('videoView') });
// observerObject.observe(element); setObserver(observerObject)
// }); elements.forEach(element => {
// } observerObject.observe(element);
// return () => { });
// elements.forEach(element => { }
// observer?.unobserve(element); return () => {
// }); elements.forEach(element => {
// observer?.disconnect(); observer?.unobserve(element);
// } });
// }, [roomUserList, currentVideoId]); observer?.disconnect();
}
}, [roomUserList, currentVideoId,footerList]);
// 声网初始化 // 声网初始化
const agoraInit = async () => { const agoraInit = async () => {
@ -745,26 +747,28 @@ const Meeting: React.FC = () => {
if (item.uid === userInfo.uid) { if (item.uid === userInfo.uid) {
const footerListTemplate = [...footerList] const footerListTemplate = [...footerList]
await agora.getVideoDeviceManager().then(async (res) => { await agora.getVideoDeviceManager().then(async (res) => {
if (res.list.length) { getUserRoomInfo().then(async (r) => {
footerListTemplate[0][1].title = item.enableCamera ? '关闭视频' : '开启视频' if (res.list.length) {
footerListTemplate[0][1].active = !item.enableCamera footerListTemplate[0][1].title = item.enableCamera ? '关闭视频' : '开启视频'
await agora.muteLocalVideoStream(!item.enableCamera) footerListTemplate[0][1].active = !item.enableCamera
} else { await agora.muteLocalVideoStream(r, item.enableMicr,item.enableCamera)
footerListTemplate[0][1].title = '开启视频' } else {
footerListTemplate[0][1].active = true footerListTemplate[0][1].title = '开启视频'
await agora.muteLocalVideoStream(true) footerListTemplate[0][1].active = true
} await agora.muteLocalVideoStream(r, item.enableMicr,false)
}
})
}) })
await agora.getAudioMediaList().then(async (res) => { await agora.getAudioMediaList().then(async (res) => {
getUserRoomInfo().then(async (r) => { getUserRoomInfo().then(async (r) => {
if (res.ecordingList.length) { if (res.ecordingList.length) {
footerListTemplate[0][0].title = item.enableMicr ? '静音' : '解除静音' footerListTemplate[0][0].title = item.enableMicr ? '静音' : '解除静音'
footerListTemplate[0][0].active = !item.enableMicr footerListTemplate[0][0].active = !item.enableMicr
await agora.muteLocalAudioStream(r, item.enableMicr) await agora.muteLocalAudioStream(r, item.enableMicr,item.enableCamera)
} else { } else {
footerListTemplate[0][0].title = '解除静音' footerListTemplate[0][0].title = '解除静音'
footerListTemplate[0][0].active = true footerListTemplate[0][0].active = true
await agora.muteLocalAudioStream(r, false) await agora.muteLocalAudioStream(r, false,item.enableCamera)
} }
}) })
}) })

View File

@ -321,20 +321,28 @@ export const agora = {
rtcEngine.enableLoopbackRecording(false) rtcEngine.enableLoopbackRecording(false)
}, },
// 取消或恢复发布本地音频流 // 取消或恢复发布本地音频流
muteLocalAudioStream: async (data: any, mute: any) => { muteLocalAudioStream: async (data: any, publishMicrophoneTrack: boolean,publishCameraTrack:boolean) => {
// await rtcEngine.muteLocalAudioStream(mute) // await rtcEngine.muteLocalAudioStream(mute)
await rtcEngine.updateChannelMediaOptions({ await rtcEngine.updateChannelMediaOptions({
clientRoleType: data ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众 clientRoleType: data ? ClientRoleType.ClientRoleBroadcaster : ClientRoleType.ClientRoleAudience, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众
autoSubscribeAudio: true,//设置是否自动订阅所有音频流 autoSubscribeAudio: true,//设置是否自动订阅所有音频流
autoSubscribeVideo: true,//设置是否自动订阅所有视频流 autoSubscribeVideo: true,//设置是否自动订阅所有视频流
publishMicrophoneTrack: mute,//设置是否发布麦克风采集到的音频 publishMicrophoneTrack: publishMicrophoneTrack,//设置是否发布麦克风采集到的音频
publishCameraTrack: true,//设置是否发布摄像头采集的视频 publishCameraTrack: publishCameraTrack,//设置是否发布摄像头采集的视频
publishScreenTrack: false,//设置是否发布屏幕采集的视频 publishScreenTrack: false,//设置是否发布屏幕采集的视频
}) })
}, },
// 取消或恢复发布本地视频流 // 取消或恢复发布本地视频流
muteLocalVideoStream: async (mute: any) => { muteLocalVideoStream: async (data: any, publishMicrophoneTrack: boolean,publishCameraTrack:boolean) => {
await rtcEngine.muteLocalVideoStream(mute) // 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) => { startCameraCapture: async (bool: boolean = false) => {