Воспроизвести видео с VLC в X11 с удаленного терминала - PullRequest
8 голосов
/ 09 марта 2012

У меня проблема, я надеюсь, вы можете мне помочь.У меня есть несколько тонких терминалов с Linux, где каждый раз при загрузке запускается небольшой скрипт.Этот скрипт имеет одну командную строку cvlc, которая выглядит следующим образом:

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

Это работает нормально, потому что терминалы запускают среду X11, а затем скрипт запускается из автозапуска;видео воспроизводится и отображается на ЖК-дисплее.Моя проблема возникает, когда по той или иной причине мне нужно удаленно завершить процесс cvlc и запустить его снова.Я ssh терминал с тем же пользователем, который вошел в среду X11, я запускаю строку кода, описанную выше, и видео воспроизводится, да ... но В терминале я вошел в систему!

Итак, видеоиграет в режиме только символов, он отображается как текст в моей консоли;конечно, ничего не видно в среде X11.Итак, мой вопрос: Как я могу запустить свою команду cvlc И воспроизвести видео в X11 НЕ на самой консоли ???

Если я просто пытаюсь воспроизвести его без параметров, яполучил следующий вывод:

$ 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...
umboard@MB124205:~$ 

Так что проблема, конечно, в том, что у меня нет прямого доступа к X11 с моего удаленного терминала, так как я могу воспроизвести видео с моей удаленной консоли с помощью cvlc илиVLC?

Пожалуйста, помогите мне, СПАСИБО МНОГО !!!

Ответы [ 2 ]

9 голосов
/ 14 марта 2012

Переменная среды $ DISPLAY содержит значение экземпляра X-сервера, на котором можно запускать графические приложения.Поэтому это значение необходимо:

echo $DISPLAY
:0

Затем это значение необходимо использовать с опцией cVLC --x11-display, как в:

cvlc --x11-display :0 video.mp4

Таким образом, видео будет выводиться на X-серверсеанс, даже если эта команда используется в удаленном сеансе SSH.Однако, если сеанс завершен, видео остановится, поэтому вам нужно выполнить задание в фоновом режиме, поэтому, когда вы выйдете из системы, видео продолжит воспроизводиться:

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

Как справка о моих точных потребностях, которые, возможно, выЭто будет полезно, если вам нужно запустить видео на удаленном терминале, и вам нужно его зациклить, без видимого интерфейса VLC, в полноэкранном режиме и без абсолютного вывода в консоли, потому что, если вы запустите команду, как в предыдущем примере,возможно, выходные данные VLC будут выданы в другом сеансе SSH с тем же пользователем, вам нужно будет запустить его следующим образом:

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

Стандартный вывод и ошибка не будут отображаться в сеансе таким образом.

7 голосов
/ 09 марта 2012

Вам необходимо установить переменную DISPLAY.

Например:

export DISPLAY=:0

Возможно, вам придется использовать set вместо экспорта (и / или изменить: 0 на нечто подобное,не может проверить в данный момент, Google для переменной DISPLAY), но это общая идея, чтобы сказать, какой вывод вывода вы хотите, чтобы окно появилось.ниже ОП найдена опция командной строки:

--x11-display :0
...