启动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-directorypath属性。可以使用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/

10-12 00:44