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
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!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ąć.
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.
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.
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!
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.
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
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