带 pulseaudio 的 MPD

带 pulseaudio 的 MPD

我最近全新安装了 Ubuntu 14.10,但再次遇到了 MPD 问题。我想我上次已经成功修复了这个问题,但我不知道该怎么做。

我的问题是能否将外部蓝牙扬声器与 MPD 一起使用。更好的是,我希望能够同时使用插入式扬声器和蓝牙扬声器。

不幸的是,MPD 不会显示在 Gnome 音频设置下产生音频的应用程序下,因此它忽略了我使用蓝牙扬声器的指令。我认为这是因为 MPD 使用的是 Alsa 而不是 Pulseaudio。

现在,在我的 mpd.conf 中,我有以下几行

audio_output {
    type        "pulse"
    name        "MPD"
#   server      "localhost"
}

我也尝试过取消对服务器行的注释,但在这种情况下,MPD 甚至无法启动。

需要澄清的是,MPD 在用户 下运行mpd,该用户在组pulse和下pulse-access,但这似乎还不够。

现在,我相信我可以在自己的用户下运行 MPD,这可以解决一些问题,但我宁愿不这样做,因为这台电脑的其他用户可能也想听音乐。

让 MPD 使用 Pulseaudio 的正确方法是什么(或者采取任何必要措施将其连接到默认扬声器以外的其他扬声器?)

答案1

与系统范围内的 MPD 不同,PulseAudio 在用户空间中运行。这意味着,所有 pulseaudio 设置(包括蓝牙发现和提供蓝牙音频接收器)都是通过用户会话完成的。

MPD 守护程序在系统范围内运行时无法访问在用户会话中运行的 Pulse Audio 设备。理论上可以在系统范围内运行 Pulse Audio,因此不建议,至少我们不应该在桌面设置中这样做。那么从用户空间运行 MPD 会是一个更好的选择。

为了仍然能够使用正在运行的 PulseAudio 服务器所提供的设备,我们使用了 PulseAudio 和 MPD 的 TCP 流式传输功能。

这需要以下内容/etc/mpd.conf

audio_output {
       type     "pulse"
       name     "My PULSE Device"
       server   "localhost"
}

然后我们还需要加载 TCP 协议以流式传输到正在运行的 PulseAudio 服务器。这可以添加到/etc/pulse/default.pa每次用户登录时加载(或从 CLI 启动以进行测试pacmd load-module)。

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 # IP of localhost

免责声明:这应该可以切换到蓝牙音频设备,但我无法测试这一点,因为我的蓝牙适配器在我的 14.10 测试系统上存在问题。

答案2

@Takkat 提出的解决方案对我也有用,只需稍加修改即可:

在 Debian Buster 上,我只需要在 mpd.conf 选项中替换localhost127.0.0.1否则servermpd 会尝试连接 IPv6 地址::1并失败:

ERROR: Failed to open "My PULSE Device" [pulse]; failed to connect: Access denied

(抱歉,我只是回答而不是评论,我是新来的,还没有足够的积分来发表评论。如果有人移动或删除此消息,对我来说没问题)。

相关内容