現在再生中のメディアのタイトル、ステータス(再生/一時停止)、現在位置、合計時間などを含む出力を取得したいと思いますmpv
。
mocp
たとえば、プレーヤーでは簡単です。mocp -i
次の出力を提供します。
State: PLAY
File: /home/piotr/muz/09 Svantetic.mp3
Title: 1 Możdżer - Svantetic (Komeda)
Artist: Możdżer
SongTitle: Svantetic
Album: Komeda
TotalTime: 03:35
TimeLeft: 03:22
TotalSec: 215
CurrentTime: 00:13
CurrentSec: 13
Bitrate: 235kbps
AvgBitrate: 236kbps
Rate: 44kHz
この情報は利用できますかmpv
?
修正する:
Luaスクリプトが必要なようです。私はこの言語に慣れていないので、アドバイスをいただきありがとうございます。私はコマンドラインから呼び出すときに上記の情報を提供するスクリプトに興味があります。
アップデート2
明らかにmpvからこれらの簡単な情報を取得するには、mpvソケットを起動してからJSONを解析してデータを抽出する必要があります。今すぐ素早く汚れたソリューションで終わります(まだ組み込みの機能がないとは信じていません...)。
mpv <file> --input-ipc-server=/tmp/mpvsocket
そしてbashスクリプト:
POSITION=$(echo '{ "command": ["get_property_string", "time-pos"] }' | socat - /tmp/mpvsocket | jq .data | tr '"' ' ' | cut -d'.' -f 1)
REMAINING=$(echo '{ "command": ["get_property_string", "time-remaining"] }' | socat - /tmp/mpvsocket | jq .data | tr '"' ' ' | cut -d'.'
-f 1)
METADATA=$(echo '{ "command": ["get_property", "filtered-metadata"] }' | socat - /tmp/mpvsocket | jq ".data.Artist, .data.Album, .data.Title")
echo $METADATA
printf '%d:%02d:%02d' $(($POSITION/3600)) $(($POSITION%3600/60)) $(($POSITION%60))
printf ' %d:%02d:%02d\n' $(($REMAINING/3600)) $(($REMAINING%3600/60)) $(($REMAINING%60))
出力は次のとおりです。
"Nils Frahm" "Felt" "Keep"
0:01:33 0:01:53
(注:METADATAはタグ付きファイルでのみ機能します。オンラインストリーミングから情報を取得するには他のコマンドを適用する必要があります。/tmp/mpvsocketjq
でJSONデータ解析を使用します。)
答え1
このmpvスクリプト統計.lua現在再生中のメディアの情報が表示されます。 i、I、1、2、3 を押して stats.lua という名前を付け、 ~/.config/mpv/scripts/stats.lua に入れます。 mpvが起動しました。常にロードが完了したくありません。
mpv --script=~/.config/mpv/scripts/mynotify.lua /path/to/media.webm
(スクリプトのフルパス可能必要)