Оболочка Linux: Программирование VLC
есть ли способ манипулировать VLC с помощью сценария оболочки Linux без сценария, ожидающего закрытия VLC.
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
этот код продолжает работать VLC, пока файл не будет завершен, а затем, очевидно, поздно приостанавливать файл.
3 ответов
вам нужно использовать интерфейс dbus VLC.
теперь, вы можете использовать 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.
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