视频会议

This commit is contained in:
duoaohui
2026-05-23 23:04:10 +08:00
parent ba7447ddb9
commit 981c12c5bb
3 changed files with 81 additions and 14 deletions

View File

@@ -467,26 +467,27 @@ const acquireVideoTrack = async () => {
}
const onMicToggle = async () => {
pushDebug(`mic点击 loading=${audioLoading.value} leaving=${leaving.value} on=${audioEnabled.value} producer=${meetingStore.localProducers?.audio || 'null'}`)
pushDebug(`mic点击 loading=${audioLoading.value} on=${audioEnabled.value} producer=${meetingStore.localProducers?.audio || 'null'}`)
if (audioLoading.value || leaving.value) {
pushDebug('mic 被 loading/leaving 拦住')
return
}
audioLoading.value = true
try {
if (audioEnabled.value) {
pushDebug('mic -> stopLocalAudio')
await meetingStore.stopLocalAudio()
pushDebug('mic stop 完成')
if (meetingStore.localProducers?.audio) {
// 已经有 producer只 mute/unmute不释放硬件关键WebView 释放后申请会被拒)
pushDebug(`mic -> setLocalAudioMuted(${audioEnabled.value})`)
await meetingStore.setLocalAudioMuted(audioEnabled.value)
pushDebug(`mic mute 切换完成 enabled=${meetingStore.localAudioEnabled}`)
} else {
// 没 producer兜底走完整流程自己 getUserMedia 拿 track用户手势作用域内
pushDebug('mic -> getUserMedia(audio)')
const track = await acquireAudioTrack()
pushDebug(`mic 拿到 track id=${track?.id?.slice(0, 8)} label=${track?.label || ''}`)
pushDebug('mic -> startLocalAudio(track)')
await meetingStore.startLocalAudio(undefined, track)
pushDebug(`mic start 完成 enabled=${meetingStore.localAudioEnabled}`)
localMediaError.value = ''
}
localMediaError.value = ''
} catch (err) {
pushDebug(`mic 报错: ${err?.name || ''} ${err?.message || err}`)
localMediaError.value = `麦克风:${err?.message || err}`
@@ -496,26 +497,25 @@ const onMicToggle = async () => {
}
const onCamToggle = async () => {
pushDebug(`cam点击 loading=${videoLoading.value} leaving=${leaving.value} on=${videoEnabled.value} producer=${meetingStore.localProducers?.video || 'null'}`)
pushDebug(`cam点击 loading=${videoLoading.value} on=${videoEnabled.value} producer=${meetingStore.localProducers?.video || 'null'}`)
if (videoLoading.value || leaving.value) {
pushDebug('cam 被 loading/leaving 拦住')
return
}
videoLoading.value = true
try {
if (videoEnabled.value) {
pushDebug('cam -> stopLocalVideo')
await meetingStore.stopLocalVideo()
pushDebug('cam stop 完成')
if (meetingStore.localProducers?.video) {
pushDebug(`cam -> setLocalVideoMuted(${videoEnabled.value})`)
await meetingStore.setLocalVideoMuted(videoEnabled.value)
pushDebug(`cam mute 切换完成 enabled=${meetingStore.localVideoEnabled}`)
} else {
pushDebug('cam -> getUserMedia(video)')
const track = await acquireVideoTrack()
pushDebug(`cam 拿到 track id=${track?.id?.slice(0, 8)} label=${track?.label || ''}`)
pushDebug('cam -> startLocalVideo(track)')
await meetingStore.startLocalVideo(undefined, track)
pushDebug(`cam start 完成 enabled=${meetingStore.localVideoEnabled}`)
localMediaError.value = ''
}
localMediaError.value = ''
} catch (err) {
pushDebug(`cam 报错: ${err?.name || ''} ${err?.message || err}`)
localMediaError.value = `摄像头:${err?.message || err}`