You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中为所有Browser View替换默认摄像头的方案求助

问题:Electron中切换摄像头后同步所有Browser View设备失效

当前需求是切换摄像头时同步修改所有Browser View的摄像头设备。目前已能正确识别摄像头设备并将目标deviceId传递至Browser View,但仅本地预览会切换设备,发起视频通话时仍使用默认摄像头。

尝试过两种解决思路但未找到可行实现方法:

  • 在加载Browser View前修改默认媒体设备
  • 移除多余媒体设备仅保留目标设备(尝试过select-hid-device方法无效)

相关代码

render 代码

const [devices, setDevices] = useState([])
const [currentDevice, setCurrentDevice] = useState({audio: '', video: ''})

const initDevices = () => {
  navigator.mediaDevices.getUserMedia({audio: true, video: true})
    .then(() => navigator.mediaDevices.enumerateDevices())
    .then((deviceInfo) => {
      setDevices(deviceInfo.map(item => ({
        kind: item.kind,
        label: item.label,
        deviceId: item.deviceId
      })))
    }).catch(console.error)
}

useEffect(() => {
  initDevices()
}, [])

const onChangeHandler = ({e, type}) => {
  setCurrentDevice((prev) => ({...prev, [type]: e.target.value}))
  electron.setMediaDevices(e.target.value)
}

main.js 代码

for (const item in browserViewList) {
    if (!browserViewList[item]) continue
    browserViewList[item].forEach((item) => {
      item.browserView.webContents.send(events.setMediaDevices, params)
    })
  }

preload.js 代码

ipcRenderer.on(events.setMediaDevices, (e, device) => {
  navigator.mediaDevices.enumerateDevices().then((devicesInfo) => {
    const audio = devicesInfo.find(item => item.label === device)?.deviceId
    const video = devicesInfo.find(item => item.label === device)?.deviceId

    return navigator.mediaDevices.getUserMedia({
      audio: {deviceId: audio ? {exact: audio} : undefined},
      video: {deviceId: video ? {exact: video} : undefined}
    })
  }).then(stream => {
    const video = document.querySelector('#video_video')
    if (!video) return

    video.srcObject = stream
    video.play()
  }).catch(console.error)
})

内容的提问来源于stack exchange,提问作者Alexei Romanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:40:38