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

New*_*ood 7 python python-mss

我试图在使用 mss 和 opencv 播放网站时记录屏幕,但我不希望程序使用当前屏幕。我想把它们放在第二个桌面上播放,比如下图中的桌面 2 macos 有 4 个桌面设置

所以我可以在桌面 1 中工作而不会受到任何干扰。

jir*_*mok 5

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

这个 Ask Ubuntu 答案表明(参考“存档”(即显然已删除)论坛上的帖子)这在 X Window 系统中通常是不可能的。1答案讨论了使用Xvfb作为解决方法,但这对屏幕捕获软件似乎没有用,因为它本质上是一种在虚拟显示器上运行应用程序的方法,然后可以正常捕获。

如果在 macOS 上可以截取非活动空间的屏幕截图(我认为不太可能,原因与在 X 上相同),您可能需要使用 CoreGraphics 的非 API 函数(因为截至 2016没有空间的公共 API)。此 GitHub 存储库记录了这些功能,尽管该存储库上次更新是在 2016 年,因此它可能没有您希望的那么有用。

另一种可能与操作系统无关的选项是运行无头虚拟机并对其进行截图。效果如何取决于虚拟机管理器和虚拟机本身,以及您如何截取屏幕截图。

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


对于在寻找截取其他显示器屏幕截图的方法时看到此问题的任何人,请查看此答案的编辑历史记录。