Оболочка Linux: Программирование VLC

есть ли способ манипулировать VLC с помощью сценария оболочки Linux без сценария, ожидающего закрытия VLC.

cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60

этот код продолжает работать VLC, пока файл не будет завершен, а затем, очевидно, поздно приостанавливать файл.

3 ответов


вам нужно использовать интерфейс dbus VLC.

enter image description here

теперь, вы можете использовать mpris интерфейс VLC. Это стандарт для большинства игроков, таких как Клементина, Банши, певчая птица, spotify и т. д.

Итак, предположим, вы хотите приостановить текущую песню.

dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause

играть песню:

dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Play

Я обычно использую qdbusviewer, чтобы узнать о dbus-интерфейсе, доступном мне.


похоже, вы можете перенаправить со стандартного ввода или именованного канала. Для более сложных вещей вы можете использовать libvlc.

http://wiki.videolan.org/Uncommon_uses


Dbus-это один из способов, но dbus не существует во всех системах. Более распространенным методом было бы использование интерфейса rc:

cvlc -I rc --rc-host localhost:11337 -d

затем можно использовать netcat для передачи команд в TCP-сокет. Например:

vlc -I rc --rc-host localhost:11337 test.mp3 -d &
echo "Now playing!"
sleep 200
echo pause | netcat localhost 11337

EDIT:

после тестирования с несколькими другими интерфейсами я обнаружил oldrc интерфейс принимает сокеты домена UNIX, таким образом, следующее будет работать также без необходимости играть с брандмауэрами или беспокоиться о ком-то еще в сети возиться с вашей помощью VLC экземпляр.

vlc -I oldrc --rc-unix /var/run/vlc.sock -d
echo "Now Playing!"
sleep 200
echo "pause" | netcat -U /var/run/vlc.sock