Сетевой аудиосервер на основе pulseaudio в ubuntu
Одна из интересных возможностей аудиосервера pulseaudio — это передача аудиопотока по сети на удалённые аудиоустройства. В моём случае таким устройством оказалась звуковая карточка в торрентокачалке с подключенными колонками и с ubuntu server 10.04 на борту. Под катом лежит miniHOWTO по установке и настройке сетевого сервера pulseaudio.
Настройка клиента тривиальна. Ставим утилиту, которая сидит в трее и помогает быстро переключаться между серверами pulseaudio.
Далее запускаем её:
Меню — Sound & Video — PulseAudio Device Chooser
Добавим в автозапуск. Для этого щёлкаем на иконку в трее и выбираем пункт Preferences… Отмечаем флажок «Start applet on session login».
После настройки сервера его можно выбрать в меню.
Теперь любая программа, использующая pulseaudio для вывода звука, может воспроизводить звук через аудиокарту удалённого компьютера.
1. Ставим Avahi, если не стоит:
2. Нам необходим pulseaudio и модуль, автоматически размещающий данные о наличии аудиосервера в локальной сети через службу Avahi.
3. Создадим группу audio, участники которой имеют право доступа к аудиоустройствам:
4. Добавим себя в эту группу:
5. Добавим себя ещё и в эту группу, для доступа к pulseaudio:
6. Поставим alsa.
7. Убедимся, что вам доступны аудиоустройства. Эта комманда покажет список доступных устройств в системе.
8. Подправим конфиг pulseaudio:
У меня пропадал сигнал на alsa устройстве при одновременно включенных module-native-protocol-tcp и module-udev-detect (предположительно это баг или мои кривые руки), поэтому я убрал автоопределение звуковых карт через udev, удалив эту часть конфигурационного файла
и раскомменторовав это
Для доступа из сети к аудиосерверу раскомментируете это и добавьте параметры загрузки модуля module-native-protocol-tcp:
где 127.0.0.1;192.168.0.0/16 — это сети, в которых будет доступен наш сервер. Так же не забудьте открыть доступ к pulseaudio в iptables.
С конфигом всё.
9. Теперь нужно перезагрузить сервер. Если все прошло успешно — то у наш сервер должен появится в PulseAudio Device Chooser у клиента
Запустить аудиосервер можно, запустив следующую комманду от имени пользователя:
Остановить так:
Настройка клиента
Настройка клиента тривиальна. Ставим утилиту, которая сидит в трее и помогает быстро переключаться между серверами pulseaudio.
sudo apt-get install pulseaudio padevchooser
Далее запускаем её:
Меню — Sound & Video — PulseAudio Device Chooser
Добавим в автозапуск. Для этого щёлкаем на иконку в трее и выбираем пункт Preferences… Отмечаем флажок «Start applet on session login».
После настройки сервера его можно выбрать в меню.
Теперь любая программа, использующая pulseaudio для вывода звука, может воспроизводить звук через аудиокарту удалённого компьютера.
Настройка сервера
1. Ставим Avahi, если не стоит:
sudo apt-get install avahi-daemon
2. Нам необходим pulseaudio и модуль, автоматически размещающий данные о наличии аудиосервера в локальной сети через службу Avahi.
sudo apt-get install pulseaudio pulseaudio-module-zeroconf
3. Создадим группу audio, участники которой имеют право доступа к аудиоустройствам:
sudo groupadd audio
4. Добавим себя в эту группу:
sudo gpasswd -a user audio
5. Добавим себя ещё и в эту группу, для доступа к pulseaudio:
sudo gpasswd -a user pulse-access
6. Поставим alsa.
sudo apt-get install alsa libasound2-plugins
7. Убедимся, что вам доступны аудиоустройства. Эта комманда покажет список доступных устройств в системе.
aplay -l
8. Подправим конфиг pulseaudio:
sudo nano /etc/pulse/default.pa
У меня пропадал сигнал на alsa устройстве при одновременно включенных module-native-protocol-tcp и module-udev-detect (предположительно это баг или мои кривые руки), поэтому я убрал автоопределение звуковых карт через udev, удалив эту часть конфигурационного файла
### 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
и раскомменторовав это
### Load audio drivers statically (it's 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
Для доступа из сети к аудиосерверу раскомментируете это и добавьте параметры загрузки модуля module-native-protocol-tcp:
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish
где 127.0.0.1;192.168.0.0/16 — это сети, в которых будет доступен наш сервер. Так же не забудьте открыть доступ к pulseaudio в iptables.
С конфигом всё.
9. Теперь нужно перезагрузить сервер. Если все прошло успешно — то у наш сервер должен появится в PulseAudio Device Chooser у клиента
Запустить аудиосервер можно, запустив следующую комманду от имени пользователя:
pulseaudio -D
Остановить так:
pulseaudio -k