Есть ли способ сделать снимки экрана рабочего стола, который не является текущим активным, используя mss? - PullRequest
7 голосов
/ 14 февраля 2020

Я пытаюсь записать экран при воспроизведении веб-сайта с помощью mss и opencv, но я не хочу, чтобы программа использовала текущий экран. Я хочу, чтобы они воспроизводились на втором рабочем столе, например, на рабочем столе 2 на следующем рисунке. у macos есть 4 настройки рабочего стола

, поэтому я могу работать на рабочем столе 1 без перерыва.

1 Ответ

5 голосов
/ 16 февраля 2020

В настоящее время MSS не поддерживает захват неактивных рабочих пространств.

Этот ответ Ask Ubuntu указывает (ссылаясь на сообщение на «заархивированном» (то есть явно удаленном) форуме), что это не так Обычно это возможно в X Window System. 1 В ответе рассматривается использование Xvfb в качестве обходного пути, но это не представляется полезным для программного обеспечения для захвата экрана, поскольку по сути это способ чтобы запустить приложение на виртуальном дисплее, который затем можно захватить обычным образом.

Если в macOS возможно сделать снимок неактивного пространства (что я считаю маловероятным по тем же причинам, что и в X), вам следует Скорее всего, потребуется использовать не-API-функции из CoreGraphics (поскольку по состоянию на 2016 год не было не опубликовано c API для пробелов). Этот репозиторий GitHub документирует эти функции, хотя последний раз репозиторий обновлялся в 2016 году, поэтому он может быть не таким полезным, как хотелось бы.

Другой вариант, который может быть наименее ОС- зависит от запуска виртуальной машины без экрана и создания снимков экрана. Насколько это работает, зависит от менеджера виртуальной машины и самой виртуальной машины, а также от того, как вы делаете снимки экрана.

1 В основном потому, что неактивные рабочие столы не отображаются.


Для всех, кто видит этот вопрос, когда ищет способ сделать скриншоты других мониторов , посмотрите историю изменений этого ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...