2012-03-09 15 views
6

Mam problem, mam nadzieję, że możesz mi pomóc. Mam kilka wąskich terminali z Linuksem, gdzie mały skrypt jest uruchamiany przy każdym uruchomieniu. Skrypt ten posiada pojedynczy wiersz poleceń CVLC którym jest następujące:Odtwórz wideo z VLC w X11 z odległego terminalu

cvlc --quiet --fullscreen --no-osd --loop playlist.xspf 

Działa to OK, ponieważ zaciski uruchomić środowisko X11 i wtedy skrypt to uruchomiony z autostartu; wideo, w które jest odtwarzane i odtwarzane na LCD. Mój problem pojawia się, gdy z jakiegoś powodu, muszę zdalnie zabić proces cvlc i uruchomić go ponownie. I ssh terminal z tym samym użytkownikiem zalogowanym w środowisku X11, uruchamiam linię kodu opisaną powyżej i wideo gra, tak ... ale w terminalu jestem zalogowany!

Filmy wideo są odtwarzane tylko w trybie znakowym, są renderowane jako tekst w konsoli; Oczywiście nic nie widać w środowisku X11. Moje pytanie brzmi: Jak mogę uruchomić moje polecenie cvlc ORAZ odtworzyć wideo w X11 NIE w samej konsoli ???

Gdybym tylko spróbować odtworzyć go bez opcji, mam następujący wynik:

$ cvlc playlist.xspf 
VLC media player 1.1.4 The Luggage (revision exported) 
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS") 
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE") 
[0x9cb1114] inhibit interface error: Failed to connect to the D-Bus session daemon: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. 

[0x9cb1114] main interface error: no suitable interface module 
[0x9cb0754] main interface error: no suitable interface module 
[0x9c17914] main libvlc error: interface "globalhotkeys,none" initialization failed 
[0x9caeca4] dummy interface: using the dummy interface module... 
[0x9cabfa4] main playlist: stopping playback 
[0x9dedb34] xcb_xv generic error: parent window not available 
[0x9dedb34] xcb_x11 generic error: parent window not available 
[0x9dedb34] xcb_glx generic error: parent window not available 
[0x9dedb34] fb generic error: cannot get terminal mode (Invalid argument) 
Blocked: call to signal(28, 0x60ae4e0) 
Blocked: call to setlocale(6, "") 
Blocked: call to sigaction(20, 0x46935e0, (nil)) 
Blocked: call to sigaction(2, 0xb730c948, (nil)) 
                          Blocked: call to sigaction(15, 0xb730c948, (nil)) 
Blocked: call to sigaction(28, 0xb730c948, (nil)) 
^C[0x9cae2b4] signals interface error: Caught Interrupt signal, exiting... 
[email protected]:~$ 

Więc problem jest, oczywiście, nie mam bezpośredni dostęp do X11 z mojego zdalnego terminala , więc w jaki sposób mogę odtwarzać wideo z mojej zdalnej konsoli przy użyciu cvlc lub vlc?

Pomóż mi, DZIĘKI DUŻO !!!

Odpowiedz

7

$ DISPLAY zmiennej środowiskowej przechowuje wartość instancji serwera X, gdzie można uruchamiać aplikacje graficzne . Dlatego ta wartość jest to potrzebne:

echo $DISPLAY 
:0 

Następnie wartość ta musi być używany z CVLC --x11-display opcja jak w:

cvlc --x11-display :0 video.mp4 

ten sposób film będzie wyjście do sesji X Server, nawet jeśli polecenie to jest to używane w zdalnej sesji ssh.Jednak jeśli sesja to skończy, film zatrzyma, więc trzeba tle pracy, więc podczas wylogowania, film nadal grać:

cvlc --x11-display :0 video.mp4 & 

Jako odniesienie moich dokładnych potrzeb, które być może będziesz przydaje się, jeśli potrzebujesz uruchomić wideo w odległym terminalu i potrzebujesz go do zapętlenia, bez widocznego interfejsu VLC, na pełnym ekranie iz absolutnie bez wyjścia w konsoli, ponieważ jeśli uruchomisz komendę jak w poprzednim przykładzie, może VLC wyjście zostanie wyrzucony w innej sesji SSH z tego samego użytkownika, musisz uruchomić go w ten sposób:

cvlc -q --no-osd -L -f --no-video-title-show --x11-display :1 video.mp4 2&>1 >/dev/null & 

Standardowe wyjście i błąd nie pojawi się na sesja w ten sposób.

+1

Czy masz pojęcie, co by się stało, gdyby nie ustawiono zmiennej "DISPLAY"? Po prostu użyj 0? – puk

7

Należy ustawić zmienną WYŚWIETLACZ.

Na przykład:

export DISPLAY=:0 

może trzeba użyć ustawić zamiast eksportu (i/lub zmian: 0 do czegoś podobnego, nie mogę przetestować w momencie, google dla zmiennej DISPLAY), ale thats ogólny pomysł, aby powiedzieć, który wynik wyjściowy chcesz wyświetlić okno.

UPDATE: Jak widać od komentarzach poniżej OP znaleźć opcji wiersza poleceń:

--x11-display :0 
+1

Dzięki za odpowiedź wskazał mi właściwy kierunek, jednak nie znalazłem EXACT polecenia cvlc, aby osiągnąć ten uu I googled i wydaje się być opcja '--x11-display 0', ale dostaję okno, którego tytuł to "Color AsCii Art" Tak więc libcaca jest używany do renderowania wideo jako AsCii =/mmm ... – Metafaniel

+0

W końcu mam poprawną linię poleceń CVLC, której potrzebowałem, DZIĘKI jesteś pomocny. JEDNAK nie mogę oznaczyć twojego rozwiązania jako odpowiedzi, to nie jest kompletne. Czy powinienem zadać własne pytanie, czy uzupełnisz swoje polecenie? Dzięki – Metafaniel

+0

Czy próbowałeś ustawić "Wyjście wideo" z "Preferencji" w GUI i czy zapisujesz ustawienia do wykorzystania w przyszłości? – zaf

Powiązane problemy