启动mpv
之后,是否有办法从mpv
获取当前播放文件的完整路径?
我看到了this问题,但没有显示如何获取属性,而是如何发送命令。
最佳答案
为此,您必须使用mpv
选项启动--input-ipc-server
,或将其放入mpv.conf
文件中。看起来像:--input-ipc-server=/tmp/mpvsocket
或在mpv.conf
文件中不包含破折号:input-ipc-server=/tmp/mpvsocket
套接字连接到使用相同mpv
启动的最新input-ipc-server
实例。
然后,您可以使用类似以下的命令:
echo '{ "command": ["get_property", "<some property>"] }' | socat - /tmp/mpvsocket
例如:$ echo '{ "command": ["get_property", "path"] }' | socat - /tmp/mpvsocket
{"data":"01 - Don't Know Why.mp3","request_id":0,"error":"success"}
您可以通过执行mpv --list-properties
获取属性列表要获取完整路径,请组合
working-directory
和path
属性。可以使用jq
解析响应,因此对于所需的输出:#!/bin/sh
SOCKET='/tmp/mpvsocket'
# pass the property as the first argument
mpv_communicate() {
printf '{ "command": ["get_property", "%s"] }\n' "$1" | socat - "${SOCKET}" | jq -r ".data"
}
WORKING_DIR="$(mpv_communicate "working-directory")"
FILEPATH="$(mpv_communicate "path")"
printf "%s/%s\n" "$WORKING_DIR" "$FILEPATH"
关于linux - 获取mpv中当前播放文件的完整路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62582594/