Najszybsza metoda przechwytywania ekranu w Linuksie

To pytanie jest podobne do tego

Najszybsza metoda przechwytywania ekranu

Ale dla Linuksa / X11.

Aby być bardziej szczegółowym, potrzebuję metody przechwytywania pikselowych obrazów jednego okna (programowy odpowiednik alt-print screen w windows) działającego na X11.

Uwagi i wymagania:

1) nawet jeśli nowe okno zostanie umieszczone na górze przechwyconego okna, obraz w pikselach powinien nadal wskazywać na oryginalną aplikację okno bez okluzji

2) nie jest konieczne, aby okno aplikacji było widoczne dla użytkownika, po prostu muszę przechowywać bufory pikseli/obrazy do celów wideo

Inne alternatywy, które zbadałem to:

1) xvfb-działa ale robi Rendering CPU, co jest powolne i marnotrawstwo dobrego GPU

2) X11 wewnątrz wielu lxc-teoretycznie może działać, ale jest złożony do konfiguracja, i nie jestem pewien, czy będzie dobrze skalować z wielu okien being captured

Sugestie i pomysły są mile widziane

Author: Community, 2012-11-20

7 answers

Jest to możliwe przy użyciu VirtualGL na serwerze z akceleracją sprzętową. Po prostu skonfiguruj serwer odpowiednio, a następnie na tej samej maszynie lub na maszynie w tej samej sieci, Uruchom

export DISPLAY=<your xvfb display>
vglrun <your_app>

Będzie to miało następujące zalety:

1) Twoja aplikacja będzie renderować za pomocą virtualGL, który użyje sprzętu

2) VirtualGL wyświetli Twój kontekst 3D wewnątrz wyświetlacza Xfvb, który wyrenderuje tylko widżety 2D w procesorze

3) Konfiguracja Xvfb do renderowania do bufora ramek

4) zysk!
 7
Author: diffeomorphism,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 15:48:04

Nie jest to możliwe z czystym X11.

Możesz dostać to, co chcesz z compositing, ale tylko na serwerach, które go obsługują(większość nowoczesnych robi). To nie ma nic wspólnego z menedżerami okien. WM to po prostu kolejny klient, choć z pewnymi specjalnymi zdolnościami, ale nie są one związane z komponowaniem. Możesz użyć tego samego API compositing.

man xcomposite powinieneś zacząć.

 6
Author: n.m.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-22 19:08:35

Możesz użyć xwd (1) aby zrzucić okno X11 (i xwud (1) aby je wyświetlić). ImageMagick i Narzędzia Netpbm wiedzą, jak radzić sobie z formatem XWD. Ale nie są one szczególnie szybkie. I nie ujawnią ukrytych części okna.

 2
Author: kmkaplan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-28 02:45:00

To tylko zgadywanka, ale zakładam, że możesz użyć x11vnc z-id [windowid] (http://www.karlrunge.com/x11vnc/x11vnc_opts.html#opt-id) opcja przesyłania strumieniowego tego pojedynczego okna przez VNC. To pokaże Ci całe okno, z dokładnie takim samym położeniem jak na ekranie głównym (możesz stracić niektóre menu popup), nawet jeśli jest zakryte. Możesz pobrać współrzędne okna z prawdziwego ekranu X11.

 0
Author: vhdirk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 13:34:40

Wziąłbym źródła dla gnome-screenshot, lub jakiegoś innego istniejącego narzędzia open-source i zorientowałbym się, jak to robią.

Źródła używane przez Ubuntu znajdziesz tutaj: http://packages.ubuntu.com/quantal/gnome-screenshot

Ale, nie zapomnij sprawdzić licencji przed wyciąć i wkleić duże sekcje kodu!

 0
Author: ams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 13:40:59

Xpaint jest bardzo starym narzędziem X11 zbudowanym przy użyciu zestawu widżetów mit Athena. Plik > Zrób migawkę przechwyci okno lub wybrany przez mysz prostokąt z ekranu.

LUB

MagiCapture to narzędzie do przechwytywania i podglądu ekranu dla systemu X Window. Użytkownik może przechwycić pojedyncze okno, pojedyncze okno z dekoracjami, prostokątny obszar wyświetlacza lub cały ekran. Użytkownik może zapisać przechwycony obraz do pliku graficznego obsługiwanego przez Zestaw Narzędzi ImageMagick, który obsługuje większość (jeśli nie wszystkie) popularnych formatów graficznych. MagiCapture wykorzystuje biblioteki GLIB i GTK+ dla interfejsu użytkownika oraz biblioteki ImageMagick i GdkMagick do przetwarzania grafiki. Wymaga ImageMagick.

LUB

Zscreen: - Ta aplikacja do przechwytywania ekranu tylko dla systemu Windows ma mnóstwo funkcji. Chwyta ujęcie aktywnego okna, wybranego okna lub całego ekranu. Po uzyskaniu obrazu, automatycznie otwórz go w edytorze obrazów lub prześlij do Twitpic, YFrog, Flickr lub jedną z kilku innych obsługiwanych usług. ZScreen buforuje wszystkie obrazy, nawet te ze schowka, więc zawsze masz na wyciągnięcie ręki historię zrzutów ekranu.

 0
Author: Rahul Tripathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 15:25:04

Co można zrobić z trudnym włamaniem w sieci lokalnej jest użycie funkcji X remote Otwórz port x listen, a następnie za pomocą ENV var ustawić eksport do portu x listen, a następnie za pomocą XscreenCapture

 0
Author: AvengerMoJo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 15:31:32