LINUX.ORG.RU

Alsa вывод звука в демоне конфликт с Pulseaudio

 ,


0

2

Написал приложение на Qt. Играет звук через alsa. Все хорошо. Играет и под sudo и в демоне под рутом. До тех пор пока в юзерспейс на запустится Pulseaudio. , к примеру pavucontrol. Тогда приложение пишет что не может открыть саунд девайс. Но суть в том что приложение должно работать демоном (systemd unit). Но и в то же время кто-то будет периодически заходить под юзером и играться со звуком. Как их подружить? Пробовал написать юнит демона для пульсы в режиме system wide. Отключал ее в юзерспейсе. Добавил рута и юзера в пульсе аксесс группу. Все работает. И pavucontrol видит пульсу. Но проблема та же. Приложение пишет что саунд девайс кеннот опен если в юзерспейсе играет vlc или запущен pavucontrol. Приложение должно работать под рутом в юните так как оно ещё обращается к железу коекакому. Ну и пиликает звуки по событиям у себя. Можно отключить пульсу совсем, тогда проблем нет. Но юзеру нужно коммутировать свой внешний микрофон в своем каком-то приложении и делает он это при помощи пульсы. В приложении его нет выбора микрофона, а с пульсой это можно сделать.

пишет что саунд девайс кеннот опен

Это круто!

Но юзеру нужно коммутировать свой внешний микрофон в своем каком-то приложении и делает он это при помощи пульсы

Вот и ответ. перепиши приложение с поддержкой Pulse.

Oldboy
()

Пульса захватывает hw и альсе он уже не достаётся. Можно попробовать в настройках пульсы заставить её выводить в альсовский dmix. Часто в дистрибутивах в альсовском pcm.!default уже прописан dmix, но это надо смотреть. Может, для пульсы понадобится вкорячить loopback в качестве вывода, а к другому его концу уже цеплять dmix — там много увлекательных нюансов.

alegz ★★★★
()
Последнее исправление: alegz (всего исправлений: 1)
Ответ на: комментарий от realbarmaley

Ну, я пульсу не трогаю метровой палкой, но свой конфиг для связки алса-джек могу показать (на самом деле сейчас у меня сделано как-то так, но большой разницы нет). Пульсу, наверно, можно прикрутить к ещё одному DEV loopback’а, но как это всё коммутировать — лень разбираться. Может, как-то через bindings dmix’а.

alegz ★★★★
()