我想得到输出,包括标题,状态(播放/暂停),当前位置,总时间等信息,目前正在播放的媒体在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脚本。由于我对这门语言不熟悉,所以我希望得到任何提示。我感兴趣的脚本,将提供上述信息时,从命令行召唤。
UPDATE 2
显然,要在mpv中获得如此简单的信息,就必须启动mpv套接字,然后通过解析JSON来提取数据。现在,我以快速而肮脏的解决方案结束了(仍然无法相信没有内置的功能用于此.):
mpv --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
(注意:元数据只适用于带有标记的文件,要从在线流中获取信息,必须应用其他命令;我使用jq
解析/tmp/mpvsocket中的JSON数据)
发布于 2021-07-05 17:45:57
这个mpv脚本stats.lua将显示当前播放媒体的信息,方法是按i,I,1,2,3将其命名为stats.lua in ~/..config/ mpv / script /stats.lua,它将在每次启动mpv时加载,如果总是加载不想要的do。
脚本=~/..config/ mpv /script/mynotify.lua fy.lua /path/to/media.webm
(可能需要完整的脚本路径)
https://unix.stackexchange.com/questions/455183
复制相似问题