带有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下运行,这是在pulsepulse-access组下,但这似乎不够。

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

使MPD使用Pulseaudio的正确方法是什么(或者将其连接到除默认设置之外的其他扬声器需要做什么?)

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

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

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

这需要/etc/mpd.conf的以下/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测试系统上有问题。

@Takkat提出的解决方案也为我做了一些修改:

在Debian Buster上,我只需要用mpd.conf server选项中的127.0.0.1替换localhost ,overwise mpd尝试连接IPv6地址::1并且失败了:

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

(很抱歉答案而不是评论,我是新来的,还没有足够的评论尚待评论。如果有人移动或删除此消息,我没问题)。