воскресенье, 5 октября 2014 г.

Не работают несколько приложений с pulseaudio

Долго не доходили руки победить эту странность.
Пытался и так и эдак - запускал пульсу как демона, крутил dmix и т.п.

Оказалось всё проще:
Демон музыки mpd был запущен под своим пользователем и запускал свою собственную пульсу, которая конфликтовала с пульсой пользователя.
Если посмотреть список запущенных процессов на предмет pulse, то должны получить:

root@sky:/home/Serega# ps aux|grep puls
Serega    4629  1.1  0.3 809848  7160 ?        S<l  09:47   0:28 /usr/bin/pulseaudio --start --log-target=syslog
Serega    4636  0.0  0.1  95964  2652 ?        S    09:47   0:00 /usr/lib/pulseaudio/pulse/gconf-helper
root     26119  0.0  0.0  14844   884 pts/4    S+   10:29   0:00 grep --color=auto puls




И такая ситуация должна быть при любых запущенных программах, использующих звук. Только один пользователь.

В моём случае, был ещё mpd-пользователь. Пришлось переделать запуск mpd под пользователя Serega.

До этого пытался pulse запускать как демона, но в документации пульсы не советуют этого делать (хотя кажется логичным такое решение).

Ну и на последок, у меня пульса скисла под моим пользователем. Пришлось снести её конфиги для конкретного пользователя:
rm -rf /home/Serega/.pulse
rm -rf /home/Serega/.pulse-cookie

После этого она заново их создала и всё заработало.

Более того, при проигрывании любых звуков через что бы то ни было - программа pavucontrol должна отображать это на вкладке "Проигрывание". Иначе проигрывается через что-то другое (напрямую через алсу, или через свою пульсу?).

Ещё советуют прописать в конфигах для алса-приложений использование пульсы:

Serega@sky $ cat /home/Serega/.asoundrc
pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }


Эти записи необходимы для перенаправлений запросов к альсе на пульс. Однако может случиться, что пульс будет пытаться подключиться к альсе, а она перенаправлять на пульс и пульс не будет стартовать.
У меня это возникло из-за опции:
pcm.!default { type pulse }

Однако опция:
ctl.!default { type pulse }
Оказалась очень удобной, т.к. по умолчанию для утилит регулировки громкости алсы выбирает регулировку пульсы (проверить можно запустив alsamixer).
Благодаря этому можно управлять громкостью пульсы в косносли с помощью команд:
amixer set 'Master' 500+
и
amixer set 'Master' 500-

Для отладки пульсы можно использовать следующий метод:
killall pulsaudio
pulsaudio -vvvvv

Успехов!

Комментариев нет:

Отправить комментарий