web-dev-qa-db-ja.com

現在再生中の曲についてmplayerを照会するにはどうすればよいですか?

このコマンドを使用して、バックグラウンドで音楽を再生しています(GUIなし):

mplayer -shuffle -playlist /home/geppettvs/NAS/Musica/playlist.m3u </dev/null >/dev/null 2>&1 &

これにより、NASのMusicフォルダーから音楽が収集され、バックグラウンドで再生されます。

プレイリスト自体は、Rhythmboxまたはプレイリストを管理する機能を備えた他の音楽プレーヤーソフトウェアで作成された単なるプレイリストファイルです。

そのため、mplayerはランダムな曲で始まり、その後音楽を中断せずに再生し続けます。

私が必要なのは、何らかの方法でmplayerを照会し、どこかに配置するために現在再生中の曲名を尋ねることです。たとえば、後で使用するためにテキストファイルに書き込みます。 (パスなしのファイル名のみ)

現在、mplayerがプレイリストから音楽の再生を開始すると、mplayerが再生しているものを照会しようとすると、実際のmp3ファイル名ではなく「playlist.m3u」がタイトル名として表示されます。

代替案

GUIを使用せずにこれを実行するより良い方法がある限り、私は他の選択肢を受け入れます。教えてください、私はそれを試してみます。どんなアイデアも歓迎します。

このクレイジーなスクリプトのようなものが動作するはずです:

lsof -c mplayer | fgrep ".mp3" | awk -F"/" '{ print $NF; }' | cut -d'.' -f1

基本的には次のように機能します。

  • lsof部分は、mplayerのために開かれているすべての開いているファイルを検索します
  • fgrepは、mp3を想定して.mp3を取得します。ドットシンボルも考慮する必要があるため、fgrepを使用しました。
  • awkが入り、基本的に、ファイルのある場所からのスラッシュに基づいてすべてを区切り、$ NFが最後に出現したものを取得します。
  • あなたはmp3部分のないファイルが欲しかったので、そこに基本的なカットを入れましたが、これはawkでもできます。

これで、mplayerから曲を取得することができます。

Lsofは開いているファイルをチェックするため、これが機能するにはmplayerが実行されている必要があることに注意してください。

5
Luis Alvarado