音乐播放器守护进程/故障排除
故障排除
自动检测失败
在 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"
守护进程:无法为用户 "mpd" 设置组 ID:操作不允许
该错误表明启动进程的用户没有权限成为配置告知进程以其身份运行的另一个用户 (mpd)。
要解决此问题,只需以 root 用户 身份 启动 mpd.service
,而不是启动 用户单元。
守护进程:fatal_error:设置组 NN 失败:操作不允许
该错误表明 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 周期并导致高使用率。
对于大多数用户,通过告诉 MPD 不要使用重采样,将 auto_resample "no"
添加到 /etc/mpd.conf
的 audio_output 部分,应该可以解决该问题。
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/
下的声音设备。要修复它,请将用户设为 audio 组的成员
# gpasswd -a 'mpd' audio
MPD 在其数据库中包含隐藏文件夹,例如 syncthing 所做的重复音乐备份,例如 .stfolder
。要纠正此问题,请在同一目录中创建一个 .mpdignore
文件,其中每行列出要忽略的文件夹或文件,如 mpd 文档 中所述。