MPV:コマンドラインで再生中のメディア情報を取得するには?

MPV:コマンドラインで再生中のメディア情報を取得するには?

現在再生中のメディアのタイトル、ステータス(再生/一時停止)、現在位置、合計時間などを含む出力を取得したいと思います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

(スクリプトのフルパス可能必要)

関連情報