Рабочий стол реального времени с Mac OS X Mojave и X11 - PullRequest
1 голос
/ 08 марта 2019

Я работаю над проектом, который в реальном времени передает изображение с рабочего стола компьютера Mac OS X на устройство iOS.Моя главная проблема - захват экрана . Мне не разрешено использовать готовые библиотеки, которые позволяют записать несколько строк кода за 5 минут и транслировать видео по всему миру.Я нашел действительно хорошую вещь на GitHub, которая получает изображение всего экрана, используя X11 и C ++:

https://github.com/Butataki/cpp-x11-make-screenshot

Я протестировал этот код на своей Ubuntu, и все работает какОчарование: для захвата 1 кадра без сохранения данных требуется около 12 мс и около 25 мс с кодированием в .jpg и сохранением на диске.

Чтобы создать его, я сделал это:

$ sudo apt install libjpeg-dev libpng-dev libx11-dev

, изменив 'true' на 'TRUE' в этих строках:

//(screenshot.cpp : 232,233 lines)
jpeg_set_quality (&cinfo, quality, TRUE);
jpeg_start_compress(&cinfo, TRUE);

и изменив Z_BEST_COMPRESSION на PNG_Z_DEFAULT_COMPRESSION

Проблема в том, чтоЯ сделал почти те же операции в своем XCode (Mac OS Mojave 10.14), загрузил и связал все необходимые библиотеки, запустил исполняемый файл и, наконец ... Я получил чистое изображение.Ошибок не возникало, все работает «отлично» и сохраняет изображение .jpg в моей папке на рабочем столе.

Тогда я понял, что у X11 есть нечто, называемое «корневым окном», которое охватывает весь рабочий стол, и вы можете просто найти это окно и захватить все на своем экране.Но я думаю, что это верно для Ubuntu, а не для моего Mac.

На самом деле, в этой статье есть что-то про «корневое окно», но я просто не могу ничего исправить: https://finkers.wordpress.com/running-x11/#intro.rootless

PS Если это не очень хороший способ, возможно, есть некоторыедругие способы выполнить мою задачу (захват экрана в реальном времени в Mac OS)?

...