MPD с пульсом
Я недавно сделал чистую установку Ubuntu 14.10 и снова у меня возникли проблемы с MPD. Я думаю, что мне удалось это исправить в прошлый раз, но я не уверен, как.
Моя проблема в том, чтобы иметь возможность использовать внешний динамик Bluetooth с MPD. Более того, я бы хотел использовать одновременно подключенный динамик и динамик Bluetooth.
К сожалению, MPD не отображается под приложениями, которые производят звук в настройках звука Gnome, и, следовательно, он игнорирует мою директиву использовать динамик Bluetooth. Я думаю, это потому, что MPD использует Alsa вместо Pulseaudio.
Теперь в моем mpd.conf есть строки
audio_output {
type "pulse"
name "MPD"
# server "localhost"
}
Я также пытался разложить серверную строку, но в этом случае MPD даже не запускается.
Чтобы уточнить, MPD работает под пользователем mpd
, который находится под группами pulse
а также pulse-access
Но этого, похоже, недостаточно.
Теперь я считаю, что могу запускать MPD под своим собственным пользователем, и это могло бы решить некоторые проблемы, но я бы предпочел этого не делать, так как другие пользователи этого ПК также могут захотеть слушать музыку.
Как правильно заставить MPD использовать Pulseaudio (или делать все необходимое, чтобы подключить его к другим динамикам, отличным от стандартных?)
2 ответа
В отличие от MPD в общесистемном режиме, PulseAudio работает в пространстве пользователя. Это означает, что все настройки pulseaudio, включая обнаружение Bluetooth и предоставление приемника звука Bluetooth, выполняются в пользовательском сеансе.
Демон MPD при работе в масштабе всей системы не может получить доступ к устройствам Pulse Audio, запущенным во время сеанса пользователя. Поскольку теоретически возможно запустить Pulse Audio в общесистемном режиме, это не рекомендуется, по крайней мере, мы не должны делать это в настольной системе. Тогда будет гораздо лучше запустить MPD из пользовательского пространства.
Чтобы по-прежнему иметь возможность использовать устройства, на которых работает сервер PulseAudio, мы используем возможности потоковой передачи по TCP, как PulseAudio, так и MPD.
Это требует следующего в /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
Отказ от ответственности: это должно работать для переключения на аудиоустройство Bluetooth, но я не смог проверить это, потому что мой ключ Bluetooth имеет проблемы в моей тестовой системе 14.10.
Решение, предложенное @Takkat, также сработало для меня с небольшой модификацией:
На Debian Buster мне просто пришлось заменить localhost
с 127.0.0.1
в mpd.conf server
опция, overwise mpd пытался соединиться с IPv6-адресом ::1
и не удалось с:
ERROR: Failed to open "My PULSE Device" [pulse]; failed to connect: Access denied
(Извините за ответ вместо комментария, я здесь новичок, и у меня пока недостаточно комментариев, чтобы комментировать. Для меня не проблема, если кто-то переместит или удалит это сообщение).