2012-01-20 34 views
11

有沒有一種方法可以在沒有腳本等待VLC關閉的情況下使用Linux shell腳本來操作VLC。Linux Shell:VLC編程

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

這段代碼一直運行VLC,直到文件完成,然後顯然是要遲到暫停文件。

+4

您是否試過在'cvlc test.mp3&'後臺運行命令? – user219882

回答

15

您需要使用VLC的DBUS接口。現在

enter image description here

,您可以使用VLC的mpris接口。這是大多數球員如克萊門汀,女妖,鳴鳥,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接口。

+5

儘管您的解決方案將我指向了正確的方向,但當前的VLC僅接受稍微不同的實現。例如:'dbus-send --session --type = method_call --print-reply --dest = org.mpris.MediaPlayer2.vlc/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause' –

+0

很酷。很高興我的回答有幫助。 –

+0

感謝提及qdbusviewer。 – exic

2

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 

編輯:

與我已經發現了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