我正在尝试将本地文件添加到 mpd(通过 mpc)并播放它。我的平台是 OpenWRT 嵌入式 linux 。

因此,从手册页中,它指出:

mpc add <file>   Add a song to the current playlist

如果我做:
root@OpenWrt:~/.mpd# mpc add /usr/share/baresip/ring.wav
error adding /usr/share/baresip/ring.wav: directory or file not found

或者如果我这样做:
root@OpenWrt:~/.mpd# mpc add file:///usr/share/baresip/ring.wav
error adding file:///usr/share/baresip/ring.wav: Access denied

这里的正确语法到底是什么? mpc/mpd 的手册页真的不是很清楚。

最佳答案

你的第二次尝试几乎是正确的。您遇到的问题是 mpd 只允许通过本地连接将 file: URL 传递给它,它通过要求您连接到其 unix 域套接字来强制执行。因此,在您的 mpd.conf 中,您需要有这样一行:

bind_to_address     "/run/mpd/socket"

(根据您的系统,您可能希望将 /run 更改为 /var/run——我引用的版本适用于 debian 或 ubuntu 的最新版本,但其他版本可能不同)。

然后,您需要设置环境以指向该套接字:
export MPD_HOST=/run/mpd/socket

执行此操作时,mpc addmpc insert 可以成功接受 file: URL:
$ mpc insert "file:///data/incoming/files/111_scorpions_-_the_zoo.mp3"
$ mpc next
Scorpions - The Zoo
[playing] #23/39   0:00/5:30 (0%)
volume: n/a   repeat: off   random: off   single: off   consume: off
$

10-08 04:16