В один день мне надоел весь этот зоопарк со звуковыми серверами в linux и я решил что надо что-то делать. В начале я использовал esound...
Что же такое Pulse Audio спросите вы? Это очень мощный сетевой звуковой сервер для linux (и freebsd, сам видел ;) ). Она позволяет куче приложений использовать одну звуковую карту.
Polypaudio может играть через OSS, ALSA и jack. OSS уже почти умер, у меня не только oss модулей для ядре нет, но и выключенна эмуляция на уровне ALSA. Через jack я не пробывал. Здесь описана только настройка polypaudio через ALSA.
Для начала, нам надо поставить сам Pulse Audio и некоторые дополнительные приложения для него.
# apt-get install pulseaudio-full
Поставили. Теперь можно перейти к настройке. Вот мой конфиг, в нём ключена эмуляция esd.
$ mkdir /home/user/.polypaudio/
$ cat << EOF > /home/user/.polypaudio/default.pa
load-module module-alsa-sink
load-module module-alsa-source device=plughw:0,0
load-module module-esound-protocol-unix
load-module module-null-sink
add-autoload-sink output module-alsa-sink sink_name=output
add-autoload-source input module-alsa-source source_name=input
load-module module-native-protocol-unix
load-module module-cli
set-default-sink output
set-default-source input
EOF
Или ещё один конфиг с выключенной эмуляцией esd (с ней меньше проблем):
$ cat << EOF > /home/user/.polypaudio/default.pa
load-module module-alsa-sink
load-module module-alsa-source device=plughw:0,0
load-module module-null-sink
add-autoload-sink output module-alsa-sink sink_name=output
add-autoload-source input module-alsa-source source_name=input
load-module module-native-protocol-unix
load-module module-cli
set-default-sink output
set-default-source input
EOF
$ cat << EOF > /home/user/.polypaudio/client.conf
daemon-binary = /usr/bin/polypaudio
EOF
$ cat << EOF > /home/user/.polypaudio/daemon.conf
verbose = 1
daemonize = 1
fail = 1
high-priority = 0
disallow-module-loading = 0
exit-idle-time = -1
module-idle-time = 20
dl-search-path = /usr/lib/polypaudio-0.9/modules/
default-script-file = /etc/polypaudio
log-target = auto
use-pid-file = 1
EOF
Теперь, можно его поднять следующей командой:
$ polypaudio -D -F /home/user/.polypaudio/default.pa
Что бы выключить:
$ polypaudio -k
XMMS => Ставим плагин xmms-out-pulse и в настройках указываем что звук надо играть через него.
XMMS => Ставим плагин xmms-out-esd (или xmms-out-alsa если alsa настроенна через Pulse Audio) и выбираем его. (xmms-out-polyp есть, но до /i/S/ ещё не дополз).
MPlayer => Ставим mplayer из Сизифа и говорим играть через polyp (-ao polyp).
И так далее...
Или, с настроеной ALSA играем всё через неё. ALSA сама сделает своё грязное дело.
В последнем релизе ALSA (1.0.12) в пакет alsa-plugins добавлен плагин для вывода звука через Pulse Audio.
# apt-get install alsa-plugins
Для одного пользователя настраивается так:
$cat << EOF > /home/user/.asoundrc
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
EOF
И после, любое приложение играющее через alsa автоматически начинает играть на локальный Pulse Audio сервер.
Ставим libao-polyp:
# apt-get install libao-polyp
И настраиваем так:
$cat << EOF > /home/user/.libao
default_driver=polyp
EOF
Ставим gst-polyp:
# apt-get install gst-polyp
Как настраивается я не знаю. ;)
MPlayer как-то странно играет через esd эмуляцию в polypaudio. Вобщем, не рекомендую.
При использовании hibernate (с wks26-up ядром) возникает мелкая проблема. После просыпания машины из hibernate, polypaudio надо остановить и запустить заново (иначе, polypaudio кушает много процессорного времени и звук икает).
/usr/share/doc/pulseaudio-0.9.5/
/usr/share/doc/alsa-plugins-1.0.12/README-pulse
gst-polyp на x86_64. В текущий момент на x86_64 сломан gstreamer...
Сборка xine с polypaudio лежит в Дедале.
Ссылок на эту страницу нет