首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MPV:如何通过命令行获取有关媒体播放的信息?

MPV:如何通过命令行获取有关媒体播放的信息?
EN

Unix & Linux用户
提问于 2018-07-13 19:24:46
回答 1查看 10K关注 0票数 11

我想得到输出,包括标题,状态(播放/暂停),当前位置,总时间等信息,目前正在播放的媒体在mpv

例如,在mocp播放器中,这很简单:mocp -i提供了如下输出:

代码语言:javascript
运行
复制
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脚本:

代码语言:javascript
运行
复制
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))

它提供了输出:

代码语言:javascript
运行
复制
"Nils Frahm" "Felt" "Keep"
0:01:33 0:01:53

(注意:元数据只适用于带有标记的文件,要从在线流中获取信息,必须应用其他命令;我使用jq解析/tmp/mpvsocket中的JSON数据)

EN

回答 1

Unix & Linux用户

发布于 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

(可能需要完整的脚本路径)

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/455183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档