- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF103:Что за штука
Материал из Linuxformat.
Что за штука... PulseAudio
- Дэниел Джеймс разъясняет, зачем может пригодиться кроссплатформенный звуковой сервер на вашем рабочем столе…
- Чем-то название знакомо… это не тот регги-бэнд из Бирмингема?
Да нет, это вы со Steel Pulse путаете. Речь идет о свободном проекте, ранее известном как Polypaudio, включающем в себя аудиосервер и некоторые другие новшества. Исходный код PulseAudio опубликован под GNU LGPL и протестирован на GNU/Linux, Solaris, FreeBSD, Windows 2000 и Windows XP. Вероятно, он будет работать и на других платформах, если написать соответствующие модули.
- И зачем мне звуковой сервер? Серверов я дома не держу…
В данном контексте мы говорим о системном демоне, который обычно работает на локальной машине, а не на удаленном суперкомпьютере. Вспомните, что большинство настольных приложений на системах GNU/ Linux, работая, монополизируют входные и выходные каналы звуковой карты. Это может стать проблемой, например, если во время просмотра Flash-клипа в браузере вы получаете входящий вызов VoIP. Если сов- местное использование ресурсов невозможно, модуль браузера не пропустит телефонный звонок. Решить задачу может звуковой сервер, способный управлять аудиоаппаратурой и распределять входные и выходные сигналы между программами. Если такой сервер будет поддерживаться всеми программами, то сообщения ‘device not available’ (устройство недоступно) мы больше никогда не увидим.
- Хорошо, но на моем компьютере уже есть ALSA (Advanced Linux Sound Architecture), которая «рулит» источниками звука.
Верно подмечено, но ведь параметры dmix от ALSA необходимо настраивать вручную, редактируя файлы конфигурации; а PulseAudio предназначен для автоматической работы или графического управления. При этом PulseAudio не заменит ALSA: задача последнего – работа со звуковыми драйверами ядра на низком уровне. PulseAudio действует в системе на более высоком уровне, но все-таки ниже мультимедиа-сред, вроде GStreamer. Это другой уровень абстракции, PulseAudio не работает со звуковыми драйверами напрямую.
- А не похоже ли это на ESD, Enlightenment Sound Daemon?
Да, PulseAudio задуман как замена ESD, только с набором новых функций, наподобие автоматического перенаправления звукового вывода на внешние устройства «горячего подключения» (например, USB-наушники). Сходство с aRts, звуковой системой KDE, куда меньше, но функциональность двух систем частично перекрывается (aRts тоже способен распределять звуковые потоки между устройствами).
- Небось в системах GNU/Linux новый сервер работает только с GNOME?
Нет, поддержка KDE возможна, путем настройки aRts на использование ESD-демона (на самом деле, это будет PulseAudio – на него ведет символьная ссылка). Прямой зависимости между Gnome и PulseAudio нет, но элементы графического интерфейса программы требуют наличия gtkmm.
- Ну куда мне столько несовместимых звуковых систем для Linux-дистрибутива: за последние годы у меня были OSS, ALSA, ESD и aRts – и все работают по-разному…
По крайней мере, PulseAudio вселяет надежду на унификацию рабочих столов и дистрибутивов свободного ПО, при функциональности современных проприетарных ОС или даже превосходящей ее. Пакеты PulseAudio для большинства основных дистрибутивов уже готовы. Fedora 8 первой включила новый сервер по умолчанию, Ubuntu также обдумывает его внедрение. Дополнения ко многим настольным аудио- приложениям уже готовы, но проблемы несовместимости некоторых (особенно, устаревших) программ неизбежны.
- Зачем же тогда спешить? Стоит ли жертвовать обратной совместимостью?
Помните, я говорил о некоторых новшествах? О «горячем подключении» уже упоминалось, поддержка сети тоже усовершенствована: трансляция звука с одной машины на другую доступна в GNU/Linux уже давно, но PulseAudio обещает существенно облегчить ее настройку. Это не простое совпадение, что ведущий программист PulseAudio, инженер Red Hat Леннарт Поттеринг [Lennart Poettering], является также и ведущим разработчиком проекта Avahi mDNS/DNS-SD (он же zeroconf, или, в терминологии Apple, Bonjour). Автоопределение сетевых аудиоисточников и синхронизация по LAN – требование сегодняшнего дня.
Доступна настройка индивидуального уровня громкости для каждого приложения, а также возможность менять эти уровни динамически – например, снижать громкость звучания фильма при получении входящего вызова VoIP. При всем этом можно сохранять удачно настроенные сочетания. Пусть, например, музыкальные проигрыватели воспроизводят залихватские ритмы на 100% громкости, а системному зуммеру и 40% хватит.
Кроме того, можно сгруппировать несколько аппаратных звуковых устройств в один виртуальный комплекс, что удобно, если нужны дополнительные аудио-каналы, а дорогой многоканальной карты нет. Такого можно добиться и в ALSA, написав файл настройки для pcm_multi, но в PulseAudio это делается в графической оболочке, да еще и с компенсацией разбежки между разными картами.
- А я думал, что JACK – «последнее слово» среди звуковых серверов. Может ли быть что-то лучше него?
Да, JACK по-своему хорош, но он предназначен для других целей. Профессионалов заботит частота дискретизации, соотношение между латентностью и раз-... аудиоприложений могли стартовать с одного такта). Здесь недопустимо вмешательство компьютерных звуков в выходной аудиоканал: вообразите радиостанцию, на которой, в живом эфире, при получении каждого электронного письма пиликает системный зуммер! Большинство обычных пользователей, напротив, эти вещи совершенно не волнуют, для них главное – приятное звучание да интуитивное управление.
- Значит, войне форматов между PulseAudio и JACK не бывать?
Именно из-за возможной несовместимости PulseAudio первоначально встретили в штыки. Теперь в PulseAudio добавлена совместимость с JACK, и JACK-клиенты могут обмениваться с ним аудиопотоками. Однако поддержка подачи JACK была удалена из PulseAudio (разработчики посчитали, что рядовому пользователю это ни к чему). Заплатки для использования PulseAudio в среде ядра реального времени разработаны сравнительно недавно, и поддержка JACK нуждается в дополнительном тестировании. Предполагается, что специализированные дистрибутивы, построенные вокруг JACK, не будут включать PulseAudio (по крайней мере, по умолчанию). Есть сведения о том, что разработчики PulseAudio собираются пойти навстречу профессионалам, упростив переключение между звуковыми серверами.
- В каком направлении предполагается развитие PulseAudio?
Кое-какие «изюминки» в планах есть, например, панорамирование звука. Это означает, что, щелкнув мышью на краю рабочего стола, можно переместить центр стереозвучания в ту же сторону (как если бы оба динамика сместились к одной стороне монитора). Еще одна интересная вещь – динамический контроль громкости звучания в зависимости от фокуса. То есть, звук приложения, окно которого активно, воспроизводится в полную громкость, остальные же получают около 20% номинального уровня. В планах – относительная групповая регулировка звука (то есть, понижая громкость звука медиа-плейера ползунком, можно будет соответственно понизить и громкость остальных источников звука).
- А где можно узнать о проекте подробнее?
Сайт, на котором можно узнать о ходе дальнейшей разработки – http;//www.pulseaudio.org. Версия PulseAudio 0.9.7 вышла в конце октября 2007. API считается стабильным, но приложения нуждаются в дополнительном тестировании. Как вариант – просмотрите документацию вашего дистрибутива к PulseAudio, чтобы разыскать готовые пакеты. Есть также обзор в формате Ogg Theora на сайте http://dev.gentooexperimental.org/~flameeyes/mezcalero-pulse-demo.ogm, он может служить прекрасным практическим руководством. LXF