diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 14588a4..6d323b9 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -108,6 +108,8 @@ const Meeting: React.FC = () => { const [currentVideoId, setCurrentVideoId] = useState('') let [currentSeconds, setCurrentSeconds] = useState(0) const [currentEffective, setCurrentEffective] = useState(0) + const [isComputerAudio, setIsComputerAudio] = useState(true) + const [isFluencyPriority, setIsFluencyPriority] = useState(true) const [open, setOpen] = useState(false) const [modeOpen, setModeOpen] = useState(false) const [meetingMode, setMeetingMode] = useState('') @@ -470,7 +472,7 @@ const Meeting: React.FC = () => { const footerListTemplate = [...footerList] footerListTemplate[footerListIndex.itemIndex][footerListIndex.rowIndex].title = '停止共享' setIsSharedScreenModal(false) - await agora.setDesktopCapturerVideo(sharedScreenItem) + await agora.setDesktopCapturerVideo(sharedScreenItem, isComputerAudio, isFluencyPriority) await allUserLook(user.screenShareId) } else { message.error('请选择应用!') @@ -972,9 +974,14 @@ const Meeting: React.FC = () => { })}
- { - - }}>共享电脑音频 +
+ { + setIsComputerAudio(e.target.checked) + }} checked={isComputerAudio}>共享电脑音频 + { + setIsFluencyPriority(e.target.checked) + }} checked={isFluencyPriority}>流畅度优先 +
diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index c3ac9eb..32ee21c 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -154,6 +154,7 @@ const agora = { // 停止共享屏幕 stopScreenCapture: () => { rtcEngine.stopScreenCapture(); + rtcEngine.enableLoopbackRecording(false) }, // 取消或恢复发布本地音频流 muteLocalAudioStream: (mute: any) => { @@ -183,11 +184,22 @@ const agora = { return rtcEngine.getScreenCaptureSources({ width: 300, height: 300 }, { width: 300, height: 300 }, true); }, // 共享屏幕采集 - setDesktopCapturerVideo: async (targetSource: any) => { - // await rtcEngine.stopCameraCapture(option.sourceType) + setDesktopCapturerVideo: async (targetSource: any, isComputerAudio: boolean, isFluencyPriority: boolean) => { const user = JSON.parse(storage.getItem('user') as string) agora.stopScreenCapture(); - rtcEngine.enableLoopbackRecording(true) + if (isComputerAudio) { + rtcEngine.enableLoopbackRecording(true) + } + let data = {}; + if (isFluencyPriority) { + data = { + frameRate: 15, + dimensions: { + window: 3000, + height: 3000, + } + } + } if ( targetSource.type === ScreenCaptureSourceType.ScreencapturesourcetypeScreen @@ -199,6 +211,7 @@ const agora = { windowFocus: true, enableHighLight: true, highLightColor: 0xFF99CC00, + ...data } ); } else { @@ -209,6 +222,7 @@ const agora = { windowFocus: true, enableHighLight: true, highLightColor: 0xFF99CC00, + ...data } ); }