현재 재생 중인 미디어의 제목, 상태(재생/일시 중지), 현재 위치, 총 시간 등이 포함된 출력을 얻고 싶습니다 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
(스크립트의 전체 경로가능한필요)