LinuxシェルスクリプトでVLCを操作し、VLCが閉じるのを待たずにスクリプトを操作する方法はありますか?Linuxシェル:VLCプログラミング
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
このコードは、ファイルが完成するまでVLCを実行し続け、ファイルを一時停止するのが遅くなることは明らかです。
LinuxシェルスクリプトでVLCを操作し、VLCが閉じるのを待たずにスクリプトを操作する方法はありますか?Linuxシェル:VLCプログラミング
cvlc test.mp3
echo "Now playing!"
sleep 200
cvlc://pause:60
このコードは、ファイルが完成するまでVLCを実行し続け、ファイルを一時停止するのが遅くなることは明らかです。
あなたはVLCのdbusのインターフェイスを使用する必要があります。
さて、あなたはVLCのmprisインタフェースを使用することができます。これは、クレメンタイン、バンシー、歌詞、スポットなど多くのプレイヤーにとって標準です。
したがって、現在再生中の曲を一時停止したいとします。
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
は、私は一般的に私に利用できるdbusのインターフェイスを知ってqdbusviewerを使用しています。
あなたのソリューションは正しい方向に私を指摘しましたが、現在の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
は、1つは、TCPソケットにパイプコマンドへのnetcatを使用することができます。たとえば、次のように
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
コマンドを 'cvlc test.mp3&'のようにバックグラウンドで実行しようとしましたか? – user219882