# PulseAudio (Русский)

PulseAudio - это звуковой сервер для POSIX и Win32 систем. Его основное назначение - смешивать звуковые потоки от разных приложений, позволяя многим потокам воспроизводиться одновременно.

## Установка

Все пакеты находятся в репозитории community. Вы должны разрешить его использование. Для установки PulseAudio:

    # pacman -S pulseaudio

Дополнительно Вы можете установить графические (GTK)утилиты для PulseAudio:

    # pacman -S paprefs pavucontrol

## Запуск

Запуск сервер 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

- Allow multiple programs to play sound at once

## Ссылки

- 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

Category:

- Русский