有沒有一種方法可以在沒有腳本等待VLC關閉的情況下使用Linux shell腳本來操作VLC。Linux Shell:VLC編程
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
這段代碼一直運行VLC,直到文件完成,然後顯然是要遲到暫停文件。
有沒有一種方法可以在沒有腳本等待VLC關閉的情況下使用Linux shell腳本來操作VLC。Linux Shell:VLC編程
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
這段代碼一直運行VLC,直到文件完成,然後顯然是要遲到暫停文件。
您需要使用VLC的DBUS接口。現在
,您可以使用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接口。
儘管您的解決方案將我指向了正確的方向,但當前的VLC僅接受稍微不同的實現。例如:'dbus-send --session --type = method_call --print-reply --dest = org.mpris.MediaPlayer2.vlc/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause' –
很酷。很高興我的回答有幫助。 –
感謝提及qdbusviewer。 – exic
它看起來像你可以從標準輸入或命名管道重定向。對於更復雜的事情你可以使用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
編輯:
與我已經發現了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
您是否試過在'cvlc test.mp3&'後臺運行命令? – user219882