有没有办法使用 mss 截取桌面的屏幕截图,而不是当前活动的桌面?

Is there a way to take screen shots of desktop that not current active one using mss?

我想用mss和opencv播放网站时录屏,但我不想让程序使用当前屏幕。我想把它们放在第二个桌面上播放,如下图的桌面 2 macos have 4 desktop setup

这样我就可以在桌面 1 上不受干扰地工作了。

目前,MSS 不支持捕获非活动工作space秒。

This Ask Ubuntu answer indicates (referencing a post on an "archived" (i.e. apparently deleted) forum) that this is not normally possible in the X Window System.1 The answer discusses using Xvfb 作为解决方法,但这似乎对屏幕捕获软件没有用,因为它本质上是一种在虚拟显示器上 运行 应用程序的方法,然后可以正常捕获。

如果在 macOS 上可以截取非活动 space 的屏幕截图(出于与在 X 上相同的原因,我认为这不太可能),您可能需要使用非 API 来自 CoreGraphics 的函数(因为有 ). This GitHub repository 记录了这些函数,尽管存储库上次更新是在 2016 年,所以它可能没有您想要的那么有用。

另一个可能最不 OS 依赖的选项是 运行 无头虚拟机并截取它的屏幕截图。效果如何将取决于虚拟机管理器和虚拟机本身,以及您截取屏幕截图的方式。

1 主要是因为未呈现非活动桌面。


如果有人在寻找截取其他 监视器 屏幕截图的方法时看到此问题,请查看此答案的编辑历史记录。