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?

고쳐 쓰다:

루아 스크립트가 필요한 것 같습니다. 저는 이 언어에 익숙하지 않기 때문에 조언을 주시면 감사하겠습니다. 나는 명령줄에서 호출할 때 위의 정보를 제공하는 스크립트에 관심이 있습니다.

업데이트 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는 태그가 지정된 파일에서만 작동합니다. 온라인 스트리밍에서 정보를 얻으려면 다른 명령을 적용해야 합니다. 저는 jq/tmp/mpvsocket에서 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

(스크립트의 전체 경로가능한필요)

관련 정보