如何在Python代码中捕获Wayland(Gnome)屏幕?

5
我正在尝试使用Python捕获屏幕,因为我将在OpenCV上使用它,但我无法找到一种方法使其在Gnome上工作,因为Gnome使用Wayland,而我找到的所有库都只适用于X11。
目前,我不考虑更改我的界面。我正在寻找解决此问题的方法。有人知道解决方案吗?
更具体地说,我将使用这些图像来训练AI,因此我需要它们连续。
编辑: 我已经找到了this,但如何将帧传递给Python中的OpenCV,而不是保存视频文件?

截至2017年5月,Wayland并未被任何主要的Linux发行版默认使用。我猜它还需要一两年的时间才能被Debian完全采用,其他发行版则需要更长的时间。此外,我相信X11回退将会被保留以确保兼容性。你有尝试过使用X11库吗? - Marat
@Marat Fedora默认已经使用Wayland(如果驱动程序支持)了。至少Debian GNOME团队计划在Stretch发布后切换到Wayland。 - Jussi Kukkonen
@jku 我不会说 Fedora 是一个非常受欢迎的发行版,而 Stretch 比最初计划的时间更长。Pedro,你是否在 Fedora 25 上测试过这个? - Marat
“Fedora不是一个非常受欢迎的发行版” - 好的 :) - Jussi Kukkonen
@Marat 我正在使用Arch Linux操作系统。 - Pedro Vinicius
显示剩余2条评论
1个回答

1
这些天进行屏幕录制的正确方法是使用Screencast portal,它是XDG桌面门户的一部分,已经得到GNOME、KDE、wlroots(等等)的支持。作为额外的优势,这也将在像Flatpaks这样的容器化格式中工作。
您可以找到一个示例,了解如何使用this snippet在Python中进行屏幕录制,由Mutter维护者之一创建。如果您寻找parse_launch(),您将看到一个GStreamer管道,您可以修改以包括可以为您处理的GStreamer OpenCV元素。
注意:在您的编辑中,您链接到该门户的前身,它是GNOME特定的内部API,因此我不会依赖它;-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接