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

简单的解释

如果正在播放mpd并且声音试图通过另一个应用程序x播放,则不会输出x的声音。

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

细节

我首先注意到Flash的这个问题,这仍然是最常见的情况。 我发现了一个关于这个的问题,然后才意识到它与Flash没有严格关系,而是与mpd有关。

我最大的挫折来自于试图让mpd再次工作,因为我似乎无法确定任何方法。 有时pulseaudio -k似乎有帮助,有时sudo /etc/init.d/mpd restart ,其他人用SIGTERM杀死Chromium(由于Flash)。 大多数时候它是上述的组合。

我想这可能是因为我作为另一个用户运行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作为当前用户的情况下修复它?

我第一次开始使用mpd时遇到了这个问题,但是很久以前,所以我不记得我做了什么修复它!

你安装了PulseAudio首选项吗? 我在论坛上发现了这个提示: sudo apt-get install paprefs

然后从菜单中打开PulseAudio prefrences:System-> Preferences-> PulseAudio Preferences单击Network Server选项卡,然后选中“Enable network access to local sound devices”框,最后选中“Do not require authentication”框。 之后,重启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复制到home directiory(如.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 

作为用户运行可能存在缺点,因此可能不适合您的需求。

不确定它是否完全相同,但是我的旧版本默认设置为mpd,我认为mpd试图以不同的用户(mpd用户)启动自己的脉冲音频。 我发现在/etc/mpd.conf中设置我的脉冲输出到使用套接字连接更简单,以避免这种问题。

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

然后你可能想检查你接受本地连接的paprefs

当根据维基指令作为自己的用户运行时,mpd将无法将声音发送到另一个用户的pulseaudio服务器。 不是将pulseaudio设置为系统范围的守护进程,而是上游强烈反对的做法,而是可以配置mpd使用pulseaudio的tcp模块将声音发送到localhost:

首先,取消注释/etc/pulse/default.pa中的tcp模块或$ XDG_CONFIG_HOME / pulse / default.pa(通常为〜/ .config / pulse / default.pa)并将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