MPD 与脉冲音频

And*_*rea 7 sound pulseaudio bluetooth mpd

我最近全新安装了 Ubuntu 14.10,但再次遇到 MPD 问题。我想我上次已经设法修复它,但我不确定如何。

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

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

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

audio_output {
    type        "pulse"
    name        "MPD"
#   server      "localhost"
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过对服务器行进行注释,但在这种情况下,MPD 甚至没有启动。

澄清一下,MPD 是在 user 下运行的,而 usermpd是在组pulseand 下pulse-access,但这似乎还不够。

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

让 MPD 使用 Pulseaudio 的正确方法是什么(或者做任何必要的事情将它连接到其他扬声器而不是默认扬声器?)

Tak*_*kat 13

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

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

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

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

audio_output {
       type     "pulse"
       name     "My PULSE Device"
       server   "localhost"
}
Run Code Online (Sandbox Code Playgroud)

然后我们还需要加载 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
Run Code Online (Sandbox Code Playgroud)

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