Music Player Daemon/故障排除
故障排除
自动检测失败
在 MPD 启动期间,它会尝试自动检测您的设置并相应地配置输出和音量控制。虽然这通常进展顺利,但对于某些系统来说会失败。明确告诉 MPD 使用什么作为输出和混音器控制可能会有所帮助。如果您按照上述方法从 /etc/mpd.conf.example
复制了 /etc/mpd.conf
,您可以简单地取消注释
alsa 输出类型和 alsa 混音器的示例
audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" # optional format "44100:16:2" # optional mixer_type "hardware" mixer_device "default" mixer_control "PCM" }
注意: 如果在使用 ESD 和 MPD 时遇到权限问题,请以 root 身份运行此命令
# chsh -s /bin/true mpd
MPD 在首次启动时挂起
这是一个常见的错误,由损坏的 mp3 标签引起。 这是一种解决此问题的实验性方法。 要求
- kid3
- easytag
这种方法非常繁琐,尤其是对于庞大的数据库。 仅作为基准,修复 16GB 数据库花费了 2.5 小时。
EasyTAG
easytag 在这里的目的是 easytag 检测标签中的错误,但像 MPD 一样,它会挂起并崩溃。 这里的技巧是 easy tags 实际上会在状态栏上告诉您哪个文件导致了问题。 在启动 easytag 之前,请确保有一个终端靠近,以便随时杀死 easy tag 以避免挂起。 准备就绪后,在树状视图中选择所有音乐所在的目录。 默认情况下,easytag 开始搜索所有子目录中的 mp3 文件。 一旦您注意到 easytag 停止扫描歌曲,请记下罪魁祸首并杀死 easytag。
Kid3
这是 kid3 派上用场的地方。 使用 kid3 转到有问题的歌曲并重写其中一个标签。 然后保存文件。 这应该强制 kid3 再次重写整个标签,从而解决 MPD 和 easy tag 挂起的问题。
重复此过程,直到完成您的音乐库。
无法连接到 mpd:找不到主机“localhost”:名称解析临时失败
如果您断开网络连接,则无法连接到 MPD(使用 ncmpcpp)。 解决方案是禁用 IPv6 或将行添加到 /etc/hosts
::1 localhost.localdomain localhost
尝试使用客户端连接到 mpd 时出现的其他问题
有些人报告说无法使用各种客户端访问 mpd,例如看到如下错误
$ ncmpcpp Cannot connect to mpd: Connection closed by the server $ sonata 2011-02-13 18:33:05 Connection lost while reading MPD hello 2011-02-13 18:33:05 Not connected 2011-02-13 18:33:05 Not connected
请参阅 Arch 论坛上关于 ncmpcpp 的帖子 此处 和 此处。 另请参阅 FS#22071。
第一种修复方法
检查 mpd.conf
中是否有类似 mpd.error
的行并将其删除。 mpd 错误文件已弃用并已删除。
第二种修复方法
如果这没有帮助,请将以下内容添加到 mpd.conf
bind_to_address "127.0.0.1" port "6600"
之后,指示您的客户端通过 127.0.0.1 连接。 例如,将以下内容添加到 ncmpcpp 配置文件中
mpd_host "127.0.0.1" mpd_port "6600"
绑定到 IPv6 先于 IPv4
如果在启动时,mpd 显示以下消息
listen: bind to '0.0.0.0:6600' failed: Address already in use (continuing anyway, because binding to '[::]:6600' succeeded)
这意味着 mpd 绑定到 ipv6 接口先于绑定到 ipv4。 如果您想使用您的 ipv4 接口,请在 mpd.conf
中硬编码它,例如
bind_to_address "0.0.0.0"
也可以指定多个绑定,例如,让 mpd 同时监听 localhost 和您的网卡的外部 IP
bind_to_address "127.0.0.1" bind_to_address "192.168.1.13"
daemon: cannot setgid for user "mpd": Operation not permitted
该错误表明启动进程的用户没有权限成为配置告知进程以其身份运行的另一个用户 (mpd)。
要解决此问题,只需以 root 用户身份启动 mpd.service
,而不是启动用户单元。
daemon: fatal_error: Failed to set group NN: Operation not permitted
该错误表明 mpd 无法设置组。 这是因为您在 /etc/mpd.conf
中设置了除默认组:mpd 之外的任何其他组。 这是因为默认的 mpd.service
文件。 它以用户 mpd 身份启动 mpd(如果没有指定组,则使用您的 /etc/passwd
中声明的此用户的默认组),因此 mpd 没有更改其组的任何权限。
第一种修复方法
在 /etc/mpd.conf
中注释掉 group=
部分或将其更改为 group=mpd
第二种修复方法
扩展单元 mpd.service
并添加您想要的组。 例如,使用组“audio”运行 mpd
/etc/systemd/system/mpd.service.d/group.conf
[Service] Group=audio
第三种修复方法
在您的 /etc/passwd
中更改用户 mpd 的默认组。
MPD & ALSA
有时,当使用其他音频输出时,例如:一些包含 Flash 小程序的网页,MPD 无法播放(直到重新启动)。 错误出现在 mpd 的日志中
Error opening alsa device "hw:0,0": Device or resource busy
发生这种情况的原因可能是
- 声卡不支持硬件混音(使用 dmix 插件)
- 应用程序不适用于 ALSA 的默认设置
有关详细说明,建议查看 此 链接。
可以通过将以下行添加到 mpd.conf
来解决此问题
mpd.conf
audio_output { type "alsa" name "Sound Card" options "dev=dmixer" device "plug:dmix" }
为了使更改生效,重启 mpd.service
。
ALSA 占用 CPU 过高
当将 MPD 与 ALSA 一起使用时,用户可能会遇到 MPD 占用大量 CPU(约 20-30%)的情况。 这是因为大多数声卡支持 48kHz,而大多数音乐为 44.1kHz,因此强制 MPD 重新采样。 此操作占用大量 CPU 周期并导致高使用率。
对于大多数用户来说,通过在 /etc/mpd.conf
的 audio_output 部分中添加 auto_resample "no"
来告诉 MPD 不要使用重新采样,应该可以解决此问题。
mpd.conf
audio_output { type "alsa" name "My ALSA Device" auto_resample "no" }
虽然它可能不会带来如此显着的加速,但启用 mmap 仍然可以加速
mpd.conf
audio_output { type "alsa" name "My ALSA Device" use_mmap "yes" }
一些用户可能还希望告诉 dmix 也使用 44kHz。 有关调整 MPD 性能的更多信息,请访问 MPD wiki
播放不同速率的音频文件(适用于 EMU 0202/0204/0404)
要播放具有自动声卡速率更改的不同速率的音频文件,请安装 pulseaudio 和 pulseaudio-alsa,并继续使用 ALSA 作为输出
mpd.conf
audio_output { type "alsa" name "Emu 0202 USB" device "hw:2,0" }
更改用户
更改 MPD 运行的组可能会导致如下错误
output: Failed to open "My ALSA Device"
[alsa]: Failed to open ALSA device "default": No such file or directory
或
player_thread: problems opening audio device while playing "Song Name.mp3"
这是因为 MPD 用户需要成为 audio 组的成员才能访问 /dev/snd/
下的声音设备。 要修复它,请添加用户,使 MPD 用户成为 audio 组的成员
# gpasswd -a 'mpd' audio
MPD 将隐藏文件夹包含在其数据库中,例如 syncthing 所做的重复音乐备份,例如 .stfolder
。 要对此进行更正,请在同一目录中创建一个 .mpdignore
文件,其中每行包含一个要忽略的文件夹或文件,如 mpd 文档中所述。