This commit is contained in:
parent
dc619db987
commit
678962d1e9
|
|
@ -170,7 +170,7 @@ const JoinSetting = forwardRef((_props: any, ref: any) => {
|
||||||
setJoinRoomSettingForm(list)
|
setJoinRoomSettingForm(list)
|
||||||
if (index === 1) {
|
if (index === 1) {
|
||||||
if (list[index].active) {
|
if (list[index].active) {
|
||||||
agora.startPreview('videoPreview', Number(user.screenShareId))
|
agora.startPreview('videoPreview', Number(user.screenShareId), +new Date())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import { storageSeeting } from '@/utils/package/public';
|
||||||
let meetingUserInfo = '' as any;
|
let meetingUserInfo = '' as any;
|
||||||
const fs = require('fs').promises;
|
const fs = require('fs').promises;
|
||||||
const { exec } = require('child_process');
|
const { exec } = require('child_process');
|
||||||
|
let c = +new Date();
|
||||||
const StupWizard = forwardRef((_props: any, ref: any) => {
|
const StupWizard = forwardRef((_props: any, ref: any) => {
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
changeModal: (index: number = 0, data: any) => {
|
changeModal: (index: number = 0, data: any) => {
|
||||||
|
|
@ -84,6 +85,8 @@ const StupWizard = forwardRef((_props: any, ref: any) => {
|
||||||
{list.map((row: any, index: number) => {
|
{list.map((row: any, index: number) => {
|
||||||
return (
|
return (
|
||||||
<div key={index} className={`${row.active ? styles.active : ''}`} onClick={async () => {
|
<div key={index} className={`${row.active ? styles.active : ''}`} onClick={async () => {
|
||||||
|
const userInfo = JSON.parse(storage.getItem('user') as string)
|
||||||
|
await agora.destroyRendererByConfigPreview(Number(userInfo.screenShareId), c)
|
||||||
const newList = [...list];
|
const newList = [...list];
|
||||||
newList.forEach(item => item.active = false);
|
newList.forEach(item => item.active = false);
|
||||||
newList[index].active = true;
|
newList[index].active = true;
|
||||||
|
|
@ -247,7 +250,7 @@ const VideoComponents = () => {
|
||||||
})
|
})
|
||||||
if (setting.videoDeviceId && list.length) {
|
if (setting.videoDeviceId && list.length) {
|
||||||
await agora.setVideoDeviceManager(setting.videoDeviceId)
|
await agora.setVideoDeviceManager(setting.videoDeviceId)
|
||||||
await agora.startPreview('videoPreview', Number(userInfo.screenShareId))
|
await agora.startPreview('videoPreview', Number(userInfo.screenShareId), c)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -305,7 +308,7 @@ const VideoComponents = () => {
|
||||||
agora.setVideoDeviceManager(e)
|
agora.setVideoDeviceManager(e)
|
||||||
if (!setting.videoDeviceId) {
|
if (!setting.videoDeviceId) {
|
||||||
const userInfo = JSON.parse(storage.getItem('user') as string)
|
const userInfo = JSON.parse(storage.getItem('user') as string)
|
||||||
await agora.startPreview('videoPreview', Number(userInfo.screenShareId))
|
await agora.startPreview('videoPreview', Number(userInfo.screenShareId), c)
|
||||||
}
|
}
|
||||||
setting.videoDeviceId = e;
|
setting.videoDeviceId = e;
|
||||||
storage.setItem('setting', JSON.stringify(setting))
|
storage.setItem('setting', JSON.stringify(setting))
|
||||||
|
|
|
||||||
|
|
@ -176,6 +176,7 @@ const Meeting: React.FC = () => {
|
||||||
const [_isLeave, setIsLeave] = useState(false)
|
const [_isLeave, setIsLeave] = useState(false)
|
||||||
const [isScreenCapture, setIsScreenCapture] = useState(false)
|
const [isScreenCapture, setIsScreenCapture] = useState(false)
|
||||||
const [isFluencyPriority, setIsFluencyPriority] = useState(false)
|
const [isFluencyPriority, setIsFluencyPriority] = useState(false)
|
||||||
|
const [isClickLock, setIsClickLock] = useState(false)
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const [modeOpen, setModeOpen] = useState(false)
|
const [modeOpen, setModeOpen] = useState(false)
|
||||||
const [meetingMode, setMeetingMode] = useState('')
|
const [meetingMode, setMeetingMode] = useState('')
|
||||||
|
|
@ -982,6 +983,7 @@ const Meeting: React.FC = () => {
|
||||||
channelId: state.channelId,
|
channelId: state.channelId,
|
||||||
sourceType: VideoSourceType.VideoSourceCameraPrimary,
|
sourceType: VideoSourceType.VideoSourceCameraPrimary,
|
||||||
})
|
})
|
||||||
|
setIsClickLock(false)
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
await agora.setupLocalVideo({
|
await agora.setupLocalVideo({
|
||||||
|
|
@ -990,6 +992,7 @@ const Meeting: React.FC = () => {
|
||||||
channelId: state.channelId,
|
channelId: state.channelId,
|
||||||
sourceType: VideoSourceType.VideoSourceScreen,
|
sourceType: VideoSourceType.VideoSourceScreen,
|
||||||
})
|
})
|
||||||
|
setIsClickLock(false)
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
await agora.setupRemoteVideoJoin({
|
await agora.setupRemoteVideoJoin({
|
||||||
|
|
@ -997,6 +1000,7 @@ const Meeting: React.FC = () => {
|
||||||
view: document.getElementById(`video-source-remote-screen`) as HTMLElement,
|
view: document.getElementById(`video-source-remote-screen`) as HTMLElement,
|
||||||
channelId: state.channelId,
|
channelId: state.channelId,
|
||||||
})
|
})
|
||||||
|
setIsClickLock(false)
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
await agora.setupRemoteVideoJoin({
|
await agora.setupRemoteVideoJoin({
|
||||||
|
|
@ -1004,13 +1008,16 @@ const Meeting: React.FC = () => {
|
||||||
view: document.getElementById(`video-source-remote-camera`) as HTMLElement,
|
view: document.getElementById(`video-source-remote-camera`) as HTMLElement,
|
||||||
channelId: state.channelId,
|
channelId: state.channelId,
|
||||||
})
|
})
|
||||||
|
setIsClickLock(false)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
if (currentVideoUid) {
|
||||||
setView()
|
setTimeout(() => {
|
||||||
}, currentVideoId ? 0 : 1500);
|
setView()
|
||||||
}, [currentLookUserStatus]);
|
}, currentVideoId ? 0 : 1500);
|
||||||
|
}
|
||||||
|
}, [currentVideoUid]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isScreenCapture) {
|
if (isScreenCapture) {
|
||||||
|
|
@ -1431,20 +1438,20 @@ const Meeting: React.FC = () => {
|
||||||
}
|
}
|
||||||
// 渲染视频
|
// 渲染视频
|
||||||
const renderVideo = async (uid: string = ''): Promise<void> => {
|
const renderVideo = async (uid: string = ''): Promise<void> => {
|
||||||
|
if (isClickLock) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (uid) {
|
if (uid) {
|
||||||
if (currentVideoId === uid) {
|
if (currentVideoId === uid || currentVideoUid === uid) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
uid = userInfo.uid
|
uid = userInfo.uid
|
||||||
}
|
}
|
||||||
setCurrentVideoUid(uid)
|
await agora.destroyRendererByView(`video-source-camera-primary`)
|
||||||
if (currentVideoId) {
|
await agora.destroyRendererByView(`video-source-screen`)
|
||||||
await agora.destroyRendererByView(`video-source-camera-primary`)
|
await agora.destroyRendererByView(`video-source-remote-screen`)
|
||||||
await agora.destroyRendererByView(`video-source-screen`)
|
await agora.destroyRendererByView(`video-source-remote-camera`)
|
||||||
await agora.destroyRendererByView(`video-source-remote-screen`)
|
|
||||||
await agora.destroyRendererByView(`video-source-remote-camera`)
|
|
||||||
}
|
|
||||||
setCurrentLookUserStatus(0)
|
setCurrentLookUserStatus(0)
|
||||||
setRoomUserList((res: any) => {
|
setRoomUserList((res: any) => {
|
||||||
let item = res.find((item: any) => item.uid === uid || item.screenShareId === uid)
|
let item = res.find((item: any) => item.uid === uid || item.screenShareId === uid)
|
||||||
|
|
@ -1453,24 +1460,27 @@ const Meeting: React.FC = () => {
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
setTimeout(() => {
|
setIsClickLock(true)
|
||||||
if (uid === userInfo.uid || uid === userInfo.screenShareId) {
|
setCurrentVideoUid('')
|
||||||
if (String(uid).length === 9) {
|
if (uid === userInfo.uid || uid === userInfo.screenShareId) {
|
||||||
// 共享屏幕
|
if (String(uid).length === 9) {
|
||||||
setCurrentLookUserStatus(2)
|
// 共享屏幕
|
||||||
} else {
|
setCurrentLookUserStatus(2)
|
||||||
// 摄像头
|
|
||||||
setCurrentLookUserStatus(1)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (String(uid).length === 9) {
|
// 摄像头
|
||||||
// 共享屏幕
|
setCurrentLookUserStatus(1)
|
||||||
setCurrentLookUserStatus(3)
|
|
||||||
} else {
|
|
||||||
// 摄像头
|
|
||||||
setCurrentLookUserStatus(4)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (String(uid).length === 9) {
|
||||||
|
// 共享屏幕
|
||||||
|
setCurrentLookUserStatus(3)
|
||||||
|
} else {
|
||||||
|
// 摄像头
|
||||||
|
setCurrentLookUserStatus(4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
setCurrentVideoUid(uid)
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
// 全员观看
|
// 全员观看
|
||||||
|
|
|
||||||
|
|
@ -393,6 +393,10 @@ export const agora = {
|
||||||
destroyRendererByConfig: async (uid: number, channelId?: string) => {
|
destroyRendererByConfig: async (uid: number, channelId?: string) => {
|
||||||
await rtcEngine.destroyRendererByConfig(option.uid === uid ? VideoSourceType.VideoSourceCameraPrimary : VideoSourceType.VideoSourceRemote, channelId, uid);
|
await rtcEngine.destroyRendererByConfig(option.uid === uid ? VideoSourceType.VideoSourceCameraPrimary : VideoSourceType.VideoSourceRemote, channelId, uid);
|
||||||
},
|
},
|
||||||
|
destroyRendererByConfigPreview: async (uid: number, channelId: number) => {
|
||||||
|
await agora.destroyRendererByView('videoPreview')
|
||||||
|
await rtcEngine.leaveChannelEx({ channelId: `${channelId + uid}`, localUid: Number(uid) })
|
||||||
|
},
|
||||||
destroyRendererByView: async (key: string) => {
|
destroyRendererByView: async (key: string) => {
|
||||||
let dom = document.getElementById(key);
|
let dom = document.getElementById(key);
|
||||||
if (dom) {
|
if (dom) {
|
||||||
|
|
@ -515,12 +519,12 @@ export const agora = {
|
||||||
await rtcEngine.getVideoDeviceManager().setDevice(deviceIdUTF8)
|
await rtcEngine.getVideoDeviceManager().setDevice(deviceIdUTF8)
|
||||||
},
|
},
|
||||||
// 开启本地视频预览
|
// 开启本地视频预览
|
||||||
startPreview: async (id: string, uid: number): Promise<void> => {
|
startPreview: async (id: string, uid: number, channelId: number): Promise<void> => {
|
||||||
rtcEngine.enableVideo();
|
rtcEngine.enableVideo();
|
||||||
rtcEngine.startPreview();
|
rtcEngine.startPreview();
|
||||||
await GetRoomRtcToken(`${+new Date()}`).then(async (res) => {
|
await GetRoomRtcToken(`${channelId + uid}`).then(async (res) => {
|
||||||
await rtcEngine.joinChannelEx(res.data, {
|
await rtcEngine.joinChannelEx(res.data, {
|
||||||
channelId: `${+new Date() + uid}`,
|
channelId: `${channelId + uid}`,
|
||||||
localUid: uid,
|
localUid: uid,
|
||||||
}, {
|
}, {
|
||||||
channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting,
|
channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue