mpd与其他应用程序冲突-控制脉冲吗?


8

简单的解释

如果MPD正在播放的声音试图通过其他应用程序,玩X,声音从X将不会输出。

如果正在播放来自另一个应用程序x的声音,然后尝试播放mpd,则mpd不会输出声音,而来自x的声音会继续播放。

细节

我首先注意到Flash出现了此问题,这仍然是最常见的情况。我意识到这与Flash无关,但发布了一个与此相关的问题,而是与mpd有关。

我最大的挫败感来自于尝试使mpd重新工作,因为我似乎无法确定任何方法。有时pulseaudio -k似乎有帮助,而其他时候sudo /etc/init.d/mpd restart,其他人则通过杀死Chromium(由于Flash)SIGTERM。在大多数情况下,是以上两种情况的结合。

我认为这可能是因为我以另一个用户身份运行mpd并使用pulseaudio。它不能以root用户或当前用户身份运行。另外,mpd带有脉冲支持。

我已经尝试了很多事情,但是老实说我无法背诵,因为已经有一段时间了。我宁愿不带任何指导去闲逛,但我真的很高兴一劳永逸地解决这个问题。

mpd.conf

通过删除注释/空白行来简化。

music_directory     "/var/lib/mpd/music"
playlist_directory      "/var/lib/mpd/playlists"
db_file         "/var/lib/mpd/tag_cache"
log_file            "/var/log/mpd/mpd.log"
pid_file            "/var/run/mpd/pid"
state_file          "/var/lib/mpd/state"

user                "mpd"
bind_to_address     "wilson"

input {
        plugin "curl"
}

audio_output {
    type        "pulse"
    name        "My Pulse Output"

}

filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"

为了解决这个问题,请问有人知道是什么原因导致的,或者在没有以当前用户身份运行mpd的情况下如何解决此问题?


1
当通过mpd播放某些东西(并且声音正在工作)时,加载声音属性窗口,单击“应用程序”选项卡,这将确定mpd是否使用PA。
奥利(Oli)

按照Alibara Iduas的说明,以当前用户身份运行mpd可以解决此问题。我仍然对为什么不能以用户“ mpd”的身份正常运行感到兴趣。
Jamie Schembri

Answers:


5

刚开始使用mpd时遇到了这个问题,但是已经有一段时间了,所以我记不清自己做了什么修复!

您是否安装了PulseAudio首选项?我在一个论坛上找到了这个技巧: sudo apt-get install paprefs

然后从菜单中打开PulseAudio首选项:系统->首选项-> PulseAudio首选项单击“网络服务器”选项卡,然后选中“启用对本地声音设备的网络访问”框,最后选中“不需要身份验证”框。之后,重新启动mpd:sudo /etc/init.d/mpd restart

但是...我只是意识到mpd对我来说很好用,并且我没有启用“对本地声音设备的网络访问”。

我认为您可能需要以当前用户身份运行mpd是正确的,这就是我正在做的事情。(我不知道为什么会这样!)

可以在此处找到设置mpd以用户身份运行的简单指南:http : //gmpc.wikia.com/wiki/MPD_INSTALL_USER_SERVICE_UBUNTU

总结一下,因为您已经安装了mpd:

1.)停止: sudo update-rc.d mpd disable

2.)将mpdconf复制到家庭目录(如.mpdconf),并将以下条目更改为用户可以访问和写入的位置:

music_directory
playlist_directory
db_file
log_file
error_file
pid_file
state_file 

我从中获取的页面建议仅在主目录中为该内容创建一个.mpd文件夹,并保存为实际的音乐目录。

3.)注释掉.mpdconf中的用户行: #user "mpd"

4.)现在,您可以运行mpd并更新数据库。

5.)要使mpd登录时以用户身份自动启动,请转到“启动应用程序”并添加mpd条目,然后在〜/ .config / autostart /中创建一个自动启动文件。

[Desktop Entry]
Type=Application
Exec=mpd
Hidden=false
NoDisplay=false
Terminal=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Music Player Daemon
Name=Music Player Daemon
Comment[en_US]=plays the music
Comment=plays the music

以用户身份运行可能会有弊端,因此这可能不适合您的需求。


在阅读本文之前,我清除了pulseaudio和mpd。安装后,Pulseaudio几乎可以正常工作,但是由于某种原因,我无法在mpd上恢复声音。无论如何,我最终遵循了指南,现在我以当前用户身份运行mpd,并且运行正常。我本来希望以用户“ mpd”的身份运行它,并且由于这不是解决方案,而是答案,所以我不会接受它作为答案。我仍然对为什么mpd不能以我希望的方式以“ mpd”用户身份运行(也许pulseaudio应该在root下运行?)感兴趣。无论如何,希望您能理解,也谢谢我!
Jamie Schembri

1
没问题,至少它现在很高兴。我唯一想到的另一件事是,以mpd用户身份运行时,请确保“ mpd”在脉冲访问(也可能是脉冲)组中列为组成员。但是我想这只会是一个问题,如果您根本没有声音,而不是这种奇怪的冲突。嗯,也请参见此Archlinux Wiki页面中的“ MPD和Alsa”和“ MPD和PulseAudio”部分:wiki.archlinux.org/index.php/Music_Player_Daemon
Aibara 2011年

再次感谢,艾巴拉。我以前已经确保mpd在正确的脉冲组中,所以在这种情况下这不是问题。您发布的链接非常有趣,特别是它在提到的“ MPD和Alsa”部分中描述了我的确切问题!这可以适应Pulse吗?
Jamie Schembri

奇怪的是,使用Alsa可以解决相同的问题,但是我真的不确定Alsa解决方案是否可以应用于Pulse-这真的超出了我的范围。我阅读过的有关Pulse出现此问题的人的所有信息要么最终以用户身份运行MPD,要么PulseAudio首选项发生了变化。抱歉!
艾巴拉(Aibara)2011年

这个问题也给我带来了麻烦,直到我将其隔离到MPD为止。顺便说一句,第一种涉及paprefs的解决方案对我不起作用,但第二种却有效。
劳伦斯

2

不知道这是否完全相同,但是使用旧的默认mpd设置,我认为mpd尝试以其他用户(mpd用户)的身份启动自己的脉冲音频。我发现在/etc/mpd.conf中将我的脉冲输出设置为使用套接字进行连接可以更容易地避免这种问题。

audio_output {
        type            "pulse"
        name            "My Pulse Output"
        server          "localhost"
}

然后,您可能需要检查是否接受了本地连接的paprefs


在Gentoo上,我还需要复制用户.pulse-cookie才能/var/lib/mpd使其正常工作,或者Pulseaudio失败failed to connect: Access denied,尽管我不确定这是正确的方法。
重播

0

按照Wiki指示以自己的用户身份运行时,mpd将无法将声音发送到另一个用户的Pulseaudio服务器。您可以将mpd配置为使用Pulseaudio的tcp模块将声音发送到本地主机,而不是将pulseaudio设置为系统范围的守护程序(上游强烈反对这种做法):

首先,在/etc/pulse/default.pa或$ XDG_CONFIG_HOME / pulse / default.pa(通常为〜/ .config / pulse / default.pa)中取消注释tcp模块,并将127.0.0.1设置为允许的IP地址。主目录优先:

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
#load-module module-zeroconf-publish

可以使用cidr符号添加其他IP范围;作为分隔符。完成此操作后,重新启动pulseaudio:

$ pulseaudio --kill
$ pulseaudio --start -or- start-pulseaudio-x11/kde

接下来,编辑/etc/mpd.conf并添加一个指向127.0.0.1的新脉冲输出作为“远程”服务器:

audio_output {
       type     "pulse"
       name     "Local Music Player Daemon"
       server       "127.0.0.1"
}

来自https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.