Calculate Forum

Pulsaudio - как решение ряда проблем со звуком

#1

Порой в рассылке возникают вопросы связанные со звуком.
Как то переключение вывода звука на HDMI-звуковую/USB-колонки, или настройка In/Out звуковых устройств в приложениях типа Skype.
Если вторую задачу выполнить еще можно шаблонами уровня desktop, то первая порой встречается во время работы.
Из личной практики: есть машина свидюхой GeForce GT 220 , на VGA висит обычный монитор, а на HDMI - плазма. Пришли клиенты, выслушали предложение и захотели посмотреть видео по этому предложению… на плазме. И если второй монитор подключили налету через nvidia-settings, то звук перенаправили налету через предварительно установленный /usr/libexec/pulse/gconf-helper - апплет из пакета pulseaudio.

Вкратце pulseaudio - звуковой сервер являющийся “прослойкой” между звуковыми устройствами и приложениями их использующими

Любая программа при должной настройке будет работать с pulseaudio.

Если явно подержки pulseaudio у приложения нет - можно использовать ALSA-драйвер pulse-сервера, т.е. опять же единый драйвер на всех компах для всех приложений. Включить его можно сделав симлинк /etc/asound.conf -> /usr/share/alsa/pulse-alsa.conf. По сути это почти вся его настройка.

Правда в установке pulesaudio есть небольшие подводные камни:
# pulseaudio-server эксклюзивно занимает звуковую. И поскольку по умолчанию это сервер запускается из под первого зашедшего пользователя, то и работать со звуком может лишь первый пользователь.
Проблема знакомая в т.ч. убунтологам, но решаемая в gentoo.
Решается она сборкой pulseaudio c ключом system-wide. Но сделать это не так то просто, он замаскирован. Чтоб его размаскировать надо либо закомментировать следующие строки

 # grep -n system-wide /usr/portage/profiles/base/package.use.mask
144:# Don't use system-wide mode unless you *really* know what you're doing.
146:media-sound/pulseaudio system-wide

либо в своем профиле где-то в файл package.use.mask добавить строку media-sound/pulseaudio -system-wide.
# Опытным путем обнаружил, что после “просыпания” машины из спящего режима, pulseaudio-сервер видит только первую звуковуху из списка /proc/asound/cards. Решается перезапуском сервера. Все руки не доходят написать нечто вроде /usr/lib/pm-utils/sleep.d/99pulseaudio для автоматизации этого процесса.
# На слабых машинах порой звук начинал “тарахтеть” при нагрузке, возможно это проблема конкретных сборок.там много было сделано разных “оптимизаций под железо”

Для удобства установки сделал несколько шаблонов настраивающих звуковую систему для работы с pulseaudio. Выкладываю не прикрепленным файлом т.к. это еще не конечный вариант и думаю их немного подпавить.
# cat /var/calculate/templates/install/pulseaudio/.calculate_directory

# Calculate append=skip belong()!= cl_name==calculate-install

# cat /var/calculate/templates/install/pulseaudio/asound.conf

# Calculate mirror symbolic link=/usr/share/alsa/pulse-alsa.conf path=/etc/

# cat /var/calculate/templates/install/pulseaudio/pulseaudio.init

# Calculate mirror symbolic link=/etc/init.d/pulseaudio path=/etc/runlevels/default/ name=pulseaudio

PS
Само собой чтоб все это заработало необходимо размаскировать ключ system-wide как было сказано выше и сделать примерно следующее

echo -e '\nUSE="${USE} pulseaudio"' >>/etc/portage/make.conf
echo -e '\n\nmedia-sound/pulseaudio avahi system-wide\n\n' >>/etc/portage/package.use/using
emerge @world -DNuavt1

И любоваться ))

Mastodon Mastodon