Electron桌面捕获多显示器视图分辨率太小

Electron desktop capture multi-monitor view resolution too small

提问人:Neobyte 提问时间:7/3/2023 更新时间:7/3/2023 访问量:55

问:

我有一个电子应用程序,它通过 WebRTC 成功地屏幕共享桌面。

不幸的是,当屏幕共享计算机具有多个监视器时,对生成流的 getUserMedia 的调用似乎将流的整体分辨率缩小为单个屏幕的数据。

例如,一台机器有 3 台显示器,每台显示器的分辨率为 1920x1080。由于某种原因,生成的桌面流本身是 1920x1080,其中有 3 个桌面屏幕。生成的分辨率在目标位置不可读。

我一直无法找到解决这个问题的方法。有什么想法吗?

作为参考,我按照 https://www.electronjs.org/docs/latest/api/desktop-capturer 中的文档打开流:

const stream = await navigator.mediaDevices.getUserMedia({
  audio: {
    mandatory: {
      chromeMediaSource: 'desktop',
    }
  },
  video: {
    mandatory: {
      chromeMediaSource: 'desktop',
    }
  }
})

在约束中设置各种宽度/最小宽度等似乎被忽略了。除了这个问题之外,该解决方案运行良好 - 如何提高流分辨率以使所有桌面屏幕在目的地上都可读?我不在乎帧率。

这似乎不是 WebRTC 本身的问题 - 在我尝试将其曲目添加到 WebRTC 之前,流中的分辨率太低了。

JavaScript 电子 WebRTC getusermedia

评论

0赞 Neobyte 7/3/2023
应该注意 - 我只是在寻找一个 Windows 解决方案。
0赞 Philipp Hancke 7/3/2023
webrtc.github.io/samples/src/content/getusermedia/...是否在同一台机器上提供三个独立的屏幕?这可能是捕获器的限制
0赞 Neobyte 7/3/2023
是的,它显示屏幕 1、2、3 作为选项。
0赞 Neobyte 7/3/2023
我会注意到您引用的链接代码使用 getDisplayMedia(),而 electron 文档使用 getUserMedia()。
0赞 Philipp Hancke 7/3/2023
electron 仍然使用旧版本的 API(这更有意义,因为它避免了 Web 版本的一些隐私问题),捕获器将是相同的(取决于版本,Chrome 最近在 Windows 上切换到了不同的捕获 API)

答: 暂无答案