PulseAudio (Русский)
PulseAudio - это звуковой сервер для POSIX и Win32 систем. Его основное назначение - смешивать звуковые потоки от разных приложений, позволяя многим потокам воспроизводиться одновременно.
Contents
- 1 Установка
- 2 Запуск
- 3 Backend Configuration
- 4 Окружения рабочего стола
- 5 Приложения
- 6 Альтернативные конфигурации
- 7 Решение проблем
- 8 See also
- 9 Ссылки
Установка
Все пакеты находятся в репозитории community. Вы должны разрешить его использование. Для установки PulseAudio:
# pacman -S pulseaudio
Дополнительно Вы можете установить GTK-утилиты для PulseAudio:
# pacman -S paprefs pavucontrol
Также для управления громкостью PulseAudio в XFCE4 можно установить пакеты:
xfce4-mixer - для виджета на панели xfce4. Для работы с PulseAudio - выбрать карту Playback в свойствах.
xfce4-volumed-pulseAUR - для регулировки громкости с клавиатуры и визуального уведомления при изменении уровня громкости.
Запуск
Запуск сервер PulseAudio:
$ pulseaudio --start
Или если Вы используете X11:
$ start-pulseaudio-x11
Остановка PulseAudio:
$ pulseaudio --kill
Заметьте, что в некоторых окружениях рабочего стола Pulseaudio запускается автоматически при входе. Смотрите раздел Desktop Environments для подробной информации.
Backend Configuration
ALSA
Для всех приложений, которые не поддерживают PulseAudio, но поддерживают ALSA рекомендуется установить плагин PulseAudio для ALSA. Самый простой путь - установить пакет pulseaudio-alsa:
# pacman -S pulseaudio-alsa
Пакет также содержит файл конфигурации ALSA/etc/asound.conf
для использования PulseAudio.
Если Вы используете Arch x86_64 и хотите использовать звук в 32-битных программах (таких как Wine), установите пакеты lib32-libpulse и lib32-alsa-plugins.
Чтобы запретить приложениям использовать OSS эмуляцию ALSA и пропускать Pulseaudio (это будет препятствовать другим приложениям воспроизводить звук), удалите модуль snd_pcm_oss
выполнив:
# rmmod snd_pcm_oss
После этого запретите автоматическую загрузку модуля, добавив !snd_pcm_oss
в MODULES в /etc/rc.conf
.
OSS
Есть несколько путей заставить работать OSS программы через PulseAudio:
osspd
Это самый простой способ.
Установите ossp и запустите его:
/etc/rc.d/osspd start
После этого добавьте его в DAEMONS в rc.conf.
padsp wrapper
Если у вас есть программы, которые используют OSS, вы можете запускать их с помощью padsp:
$ padsp OSSprogram
Например:
$ padsp aumix $ padsp sox foo.wav -t ossdsp /dev/dsp
Если хотите, можно переименовать такие программы с помощью такого скрипта(OSSprogram - ваша программа):
/usr/bin/OSSProgram
#!/bin/sh if test -x /usr/bin/padsp; then exec /usr/bin/padsp /usr/bin/OSSprogram-bin "$@" else exec /usr/bin/OSSprogram "$@" fi
GStreamer
Для настройки GStreamer на использование PulseAudio, Выполните gstreamer-properties
(часть пакета gnome-media) и выберите PulseAudio Sound Server для аудиовхода и аудиовыхода. Так же возможно настроить Gstreamer, установив переменные GConf /system/gstreamer/0.10/default/audiosink
в значение pulsesink и /system/gstreamer/0.10/default/audiosrc
в значение pulsesrc:
$ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc
Некоторые приложения(такие, как Rhythmbox) игнорируют свойство audiosink, но используют musicaudiosink. Это не может быть настроено через gstreamer-properties
, но может быть установлено вручную, используя gconf-editor
или gconftool-2
:
$ gconftool-2 -t string --set /system/gstreamer/0.10/default/musicaudiosink pulsesink
OpenAL
Программы OpenAL должны использовать PulseAudio по умолчанию. Вы можете явно настроить эти программы для использования Pulseaudio:/etc/openal/alsoft.conf
drivers=pulse,alsa
libao
Отредактируйте файл конфигурации libao:
/etc/libao.conf
default_driver=pulse
PortAudio
Текущая сборка PortAudio в репозитории community не поддерживает PulseAudio и не-mmap аудиоустройства. Если хотите все же использовать PortAudio, соберите его с помощью ABS с этим патчем.
ESD
PulseAudio является полной заменой enlightened sound daemon (ESD). Если сервер PulseAudio запущен, клиенты ESD должны воспроизводить звук без дополнительной настройки.
Окружения рабочего стола
X11
Запустите Pulseaudio после запуска X11 сессии:
$ start-pulseaudio-x11
Эта команда запускает Pulseaudio и загружает плагины для X11.
Если Вы используете GNOME или KDE, сервер Pulseaudio может быть запущен автоматически при входе.
X11 bell
To make PulseAudio play a sample when an X11 bell event happens (e.g. to make your terminal go 'Ping!' instead of 'Beep!'), add the following to
/etc/pulse/default.pa
:
load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/dialog-error.ogg load-module module-x11-bell sample=x11-bell
You can also use another sample. dialog-error.ogg
is provided by sound-theme-freedesktop.
GNOME
Интеграция PulseAudio в среду GNOME требует некоторых специальны пакетов:
- gnome-media-pulse
- gnome-settings-daemon-pulse
- libcanberra-pulse
Они являются частью группы pulseaudio-gnome.
Для GNOME 3 не требуется установки дополнительных пакетов, так как PulseAudio уже полностью в него интегрирован.
KDE 3
PulseAudio не является заменой aRts. Если вы используете KDE 3, на данный момент использование PulseAudio невозможно.
KDE 4 и Qt4
Если вы установите PulseAudio, он будет использован приложениями KDE4/Qt4. Для дополнительной информации обратитесь к страницам KDE в PulseAudio wiki.
Приложения
Audacious
Audacious изначально поддерживает PulseAudio. Для использования установите в настройках Audacious Preferences -> Audio -> Current output plugin to 'PulseAudio Output Plugin'.
mpd
Вы должны настроить mpd для использования PulseAudio.
На headless-системах запускайте PulseAudio как пользователь mpd. На настольных системах запускайте mpd как текущий пользователь и не используйте пользователя mpd.
MPlayer
MPlayer изначально поддерживает вывод PulseAudio с опцией "-ao pulse
". Он также может быть настроен на использование вывода PulseAudio по умолчанию в файле ~/.mplayer/config
для каждого пользователя, или в файле /etc/mplayer/mplayer.conf
глобально для системы:
/etc/mplayer/mplayer.conf
ao=pulse
Flashplugin (только x86_64)
Если Вы используете flashplugin из репозитория multilib, установите пакеты lib32-alsa-plugins и lib32-libcanberra-pulse, если Вы хотите использовать программное смешивание потоков, иначе Вы не сможете использовать другие приложения, пока запущен flashplugin.
# pacman -S lib32-alsa-plugins lib32-libcanberra-pulse
Альтернативные конфигурации
Системы объемного звука
Многие люди имеют многоканальные звуковые карты, но используют акустические системы для двух каналов. PulseAudio не имеет настроек по умолчанию для объемного звука. Для включения поддержки все каналов отредактируйте файл /etc/pulse/daemon.conf
: раскомментируйте строку default-sample-channels (т.е. удалите точку с запятой в начале строки) и установите значение в 6 если у Вас система 5.1, или в 8, если у Вас система 7.1.
# По умолчанию default-sample-channels=2 # Для 5.1 default-sample-channels=6 # Для 7.1 default-sample-channels=8
После внесения изменений необходимо перезапустить Pulseaudio.
Конфигурация ALSA
In order for ALSA to use PulseAudio it needs a special /etc/asound.conf
(system wide settings) (recommended) or ~/.asoundrc
(settings on a per user basis):
/etc/asound.conf
pcm.pulse { type pulse } ctl.pulse { type pulse } pcm.!default { type pulse } ctl.!default { type pulse }
Если вы пропустите последние 2 группы, Pulseaudio не будет использоваться по умолчанию. Для корректной работы нужно изменить "alsa device" на "pulse" в каждой используемой программе.
ALSA Monitor source
To be able to record from a monitor source (a.k.a. "What-U-Hear", "Stereo Mix"), use pactl list
to find out the name of the source in Pulseaudio (e.g. alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
). Then add lines like the following to /etc/asound.conf
or ~/.asoundrc
:
pcm.pulse_monitor { type pulse device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor } ctl.pulse_monitor { type pulse device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor }
Now you can select pulse_monitor
as a recording source.
PulseAudio over network
One of PulseAudio's magnificent features is the possibility to stream audio from clients over TCP to the server running the PulseAudio daemon, allowing sound to be streamed through your LAN.
To accomplish this, one needs to enable module-native-protocol-tcp, and copy the pulse-cookie to the clients.
Поддержка TCP (звук по сети)
Активируйте TCP модуль путём добавления (или удаления комментария, если уже существует) в файл /etc/pulse/default.pa
строки:
load-module module-native-protocol-tcp
To allow remote connections to the TCP module, you also have to remember to unblock the service in /etc/hosts.allow
with the following line:
pulseaudio-native: ALL
Примечание: если есть проблемы с подключением, воспользуйтесь командой (на сервере)
pacmd>> list-modules
(you can even load modules from here!)
Zeroconf (Avahi) publishing
For the remote Pulseaudio server to appear in the PulseAudio Device Chooser (padevchooser
), you will also need to add the avahi-daemon
to the DAEMONS in rc.conf on both server and clients.
Switching the PulseAudio server used by local X clients
To switch between servers on the client from within X, the pax11publish
command can be used. For example, to switch from the default server to the server at hostname foo:
$ pax11publish -e -S foo
Or to switch back to the default:
$ pax11publish -e -r
Note that for the switch to become apparent, the programs using Pulse must be restarted.
Pulseaudio through JACK
The JACK-Audio-Connection-Kit is popular for audio work, and is widely supported by Linux audio applications. It fills a similar niche as Pulseaudio, but with more of an emphasis on professional audio work. In particular, audio applications such as Ardour and Audacity (recently) work well with Jack.
Pulseaudio provides module-jack-source and module-jack-sink which allow Pulseaudio to be run as a sound server above the JACK daemon. This allows the usage of per-volume adjustments and the like for the apps which need it, play-back apps for movies and audio, while allowing low-latency and inter-app connectivity for sound-processing apps which connect to JACK. However, this will prevent Pulseaudio from directly writing to the sound card buffers, which will increase overall CPU usage.
To just try PA on top of jack you can have PA load the necessary modules on start:
pulseaudio -L module-jack-sink -L module-jack-source
To use pulseaudio with JACK, JACK must be started up before Pulseaudio, using whichever method you prefer. Pulseaudio then needs to be started loading the 2 relevant modules. Edit /etc/pulse/default.pa
, and change the following region:
### Load audio drivers statically (it is probably better to not load ### these drivers manually, but instead use module-hal-detect -- ### see below -- for doing this automatically) #load-module module-alsa-sink #load-module module-alsa-source device=hw:1,0 #load-module module-oss device="/dev/dsp" sink_name=output source_name=input #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input #load-module module-null-sink #load-module module-pipe-sink ### Automatically load driver modules depending on the hardware available .ifexists module-udev-detect.so load-module module-udev-detect .else ### Alternatively use the static hardware detection module (for systems that ### lack udev support) load-module module-detect .endif
to the following:
### Load audio drivers statically (it is probably better to not load ### these drivers manually, but instead use module-hal-detect -- ### see below -- for doing this automatically) #load-module module-alsa-sink #load-module module-alsa-source device=hw:1,0 #load-module module-oss device="/dev/dsp" sink_name=output source_name=input #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input #load-module module-null-sink #load-module module-pipe-sink load-module module-jack-source load-module module-jack-sink ### Automatically load driver modules depending on the hardware available #.ifexists module-udev-detect.so #load-module module-udev-detect #.else ### Alternatively use the static hardware detection module (for systems that ### lack udev support) #load-module module-detect #.endif
Basically, this prevents module-udev-detect from loading. module-udev-detect will always try to grab your sound-card (JACK has already done that, so this will cause an error). Also, the jack source and sink must be explicitly loaded.
QjackCtl with Startup/Shutdown Scripts
Using the settings listed above you can use QjackCtl to execute a script upon startup and shutdown to load/unload PulseAudio. Part of the reason you may wish to do this is that the above changes disable PulseAudio's automatic hardware detection modules. This particular setup is for using PulseAudio in an exclusive fashion with JACK, though the scripts could be modified to unload and load an alternate non-JACK setup, but killing and starting PulseAudio while programs might be using it would become problematic.
The following example could be used and modified as necessary as a startup script that daemonizes PulseAudio and loads the padevchooser program (optional, needs to be built from AUR) called jack_startup
:
#!/bin/bash #Load PulseAudio and PulseAudio Device Chooser pulseaudio -D padevchooser&
as well as a shutdown script to kill PulseAudio and the Pulse Audio Device Chooser, as another example called jack_shutdown
also in the home directory:
#!/bin/bash #Kill PulseAudio and PulseAudio Device Chooser pulseaudio --kill killall padevchooser
Both scripts need to be made executable:
chmod +x jack_startup jack_shutdown
then with QjackCtl loaded, click on the Setup button and then the Options tab and tick both "Execute Script after Startup:" And "Execute Script on Shutdown:" and put either use the ... button or type the path to the scripts (assuming the scripts are in the home directory) ~/jack_startup
and ~/jack_shutdown
making sure to save the changes you have made.
Pulseaudio through OSS
Add the following to /etc/pulse/default.pa
:
load-module module-oss
Then start Pulseaudio as usual. You should have sinks and sources for your OSS devices.
Pulseaudio from within a chroot (ex. 32-bit chroot in 64-bit install)
Since a chroot sets up an alternative root for the running/jailing of applications, pulseaudio must be installed within the chroot itself (pacman -S pulseaudio
within the chroot environment).
Pulseaudio, if not set up to connect to any specific server (this can be done in /etc/pulse/client.conf
, through the PULSE_SERVER environment variable, or through publishing to the local X11 properties using module-x11-publish), will attempt to connect to the local pulse server, failing which it will spawn a new pulse server. Each pulse server has a unique ID based on the machine-id value in /var/lib/dbus
. To allow for chrooted apps to access the pulse server, the following directories must be mounted within the chroot:-
/var/run /var/lib/dbus /tmp ~/.pulse
/dev/shm
should also be mounted for efficiency and good performance. Note that mounting /home would normally also allow sharing of the ~/.pulse
folder.
For specific direction on accomplishing the appropriate mounts, please refer to the wiki on installing a bundled 32-bit system, especially the additional section specific to Pulseaudio.
Решение проблем
Нет звука после установки
Нет устройств
Если PulseAudio запущен, то запустите pacmd list
. Если устройств нет в выданном отчете, тогда убедитесь что ваши ALSA устройства не заняты:
$ fuser -v /dev/snd/* $ fuser -v /dev/dsp
Убедитесь в том, что другие приложения, использующие pcm или dsp файлы, отключены и перезапустите PulseAudio.
Muted audio device
If you experience no audio output via any means while using ALSA as your default device, you may have to unmute your sound card. To do this, you will want to launch alsamixer and make sure each column has a green 00 under it (this can be toggled by pressing 'm')
$ alsamixer -c 0
Sometimes the snd_pcsp driver conflicts with the snd_hda_intel driver (for those of you
using Intel cards) and no sound output is experienced. To fix this, you can blacklist the
snd_pcsp driver in the MODULES array of /etc/rc.conf
(by appending !snd_pcsp
).
Ошибка при старте демона
Возможно процесс уже запущен или имеется "мусор" от старта предыдущего процесса. Выполнить следующие инструкции:
$ pulseaudio --kill $ killall pulseaudio $ killall -9 pulseaudio $ rm -rf ~/.pulse* $ rm -rf /tmp/pulse*
После этого попробуйте запустить PulseAudio ещё раз.
padevchooser
If you cannot launch the PulseAudio Device Chooser, first (re)start the Avahi daemon as follows:
$ /etc/rc.d/avahi-daemon restart
Glitches and high CPU usage since 0.9.14
The PulseAudio sound server has been rewritten to use timer-based audio scheduling instead of the traditional interrupt-driven approach. Timer-based scheduling may expose issues in some Alsa drivers. To turn timer-based scheduling off, replace the line:
load-module module-udev-detect
in /etc/pulse/default.pa
by:
load-module module-udev-detect tsched=0
Choppy sound
Choppy sound in pulsaudio can result from wrong settings for the sample rate in /etc/pulse/daemon.conf. Try changing the line
; default-sample-rate = 44100
to
default-sample-rate = 48000
and restart the pulsaudio server by executing
pulseaudio --kill && pulseaudio --start
Volume adjustment doesn't work properly
You might wan't to check
/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
Volume gets louder every time a new application is started
If you encounter this issue, you can fix it by uncommenting
flat-volumes = no
in
/etc/pulse/daemon.conf
Realtime scheduling
If rtkit doesn't work, you can manually set up your system to run PulseAudio with realtime scheduling, which can help performance. To do this, add the following lines to /etc/security/limits.conf
:
@pulse-rt - rtprio 9 @pulse-rt - nice -11
Afterwards, you need to add your user to the pulse-rt
group:
# gpasswd -a <user> pulse-rt
See also
Ссылки
- http://www.pulseaudio.org/wiki/PerfectSetup - Руководство по созданию и тонкой настройке вашей конфигурации
- http://www.alsa-project.org/main/index.php/Asoundrc - Alsa wiki on .asoundrc
- http://www.pulseaudio.org/ - Официальный сайт PulseAudio
- http://www.pulseaudio.org/wiki/FAQ - PulseAudio FAQ