Как запустить PulseAudio?

Я хотел бы использовать свой Raspberry Pi в качестве поглотителя PulseAudio, который может воспроизводить аудио по сети.

Для начала я хочу запустить Pulseaudio локально и столкнулся с различными ошибками. Я использую рекомендуемый образ Debian.

Какова наилучшая процедура для запуска PulseAudio?


Вот что я пробовал до сих пор:

Процедура

Моя процедура до сих пор выглядела примерно следующим образом:

Установите Pulseaudio и VLC:

sudo apt-get install pulseaudio

Настройте GStreamer на использование стока pulseaudio:

gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink

Загрузите модуль ядра для аудиоустройства

sudo modprobe snd_bcm2835

Запустите VLC с mp3

vlc 

Проблемы

VLC неоднократно ломается, печатая эту ошибку:

[0x7503d0] alsa audio output error: cannot write: Broken pipe
Комментарии к вопросу (1)

Я заставил его работать на моем Raspberry Pi, используя поглотитель ALSA, процедура следующая:

Установить необходимые файлы:

sudo apt-get install pulseaudio pulseaudio-module-zeroconf alsa-utils avahi-daemon

Чтобы включить ALSA:

sudo modprobe snd-bcm2835                      # load module for single boot
echo "snd-bcm2835" | sudo tee -a /etc/modules  # load module for persistance

Чтобы настроить сетевое взаимодействие:

sudo nano /etc/pulse/default.pa

и откомментируйте строки:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish

Чтобы запустить сервер pulseaudio, используйте:

pulseaudio -D

Вы должны быть в состоянии проверить, что он работает, воспроизводя wav-файл с помощью paplay (sudo apt-get install pulseaudio-utils), а также по сети, выбрав раковину в панели управления звуком вашей системы.

Возможно, вы также сможете настроить в общесистемном режиме с помощью:

sudo pulseaudio --system 
Комментарии (1)

Если вы хотите, чтобы pulseaudio запускался при загрузке, но как служба на уровне пользователя, вы можете создать файл systemd unit. Это может помочь, так как pulseaudio не предпочитает работать в системном режиме. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Вот сервис, который я написал в /etc/systemd/system/pulseaudio.service

[Unit]
Description=PulseAudio Sound System
Before=sound.target

[Service]
User=pi
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio
Restart=always  

[Install]
WantedBy=session.target

Before= указывает ему ждать до инициализации sound.target. BusName= подключает его к D-Bus WantedBy=session.target - полезное значение по умолчанию, но я не знаю, что оно делает.

Комментарии (1)

У меня возникли трудности с запуском pulseaudio на Wheezy raspbian (2012-10-28) с использованием аналогового выхода. Ниже описано, что я сделал, чтобы заставить его работать в режиме per-session (не в системном режиме). Системный режим тоже может работать, но я не пробовал. Настройка сервера потребует дополнительной работы. Я нашел эту информацию в разных местах, надеюсь, что собранная здесь информация кому-нибудь поможет.

Установите pulseaudio и убедитесь, что пользователь (например, eric) входит в группу audio:

sudo apt-get install pulseaudio pulseaudio-utils
sudo adduser eric audio

Измените файл /etc/asound.conf следующим образом. Это настроит pulseaudio на использование в качестве устройства alsa по умолчанию, чтобы приложения использовали его без дополнительной настройки. Первые два объявления (включая закомментированное) были в оригинальном файле.

pcm.mmap0 {
    type mmap_emul;
    slave {
      pcm "hw:0,0";
    }
}

#pcm.!default {
#  type plug;
#  slave {
#    pcm mmap0;
#  }
#}

pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

Добавьте следующие строки в /etc/pulse/daemon.conf:

default-sample-rate = 48000
resample-method = trivial

trivial - самый низкокачественный метод, но использует около 6% CPU. src-sinc-fastest также работал у меня, но использует около 25% CPU. Другие методы тоже могут работать. Этот последний бит я не совсем понимаю, зачем он нужен, но, похоже, это волшебный ингредиент. Подробнее об этом можно прочитать здесь.

Наконец, чтобы заглушить звуковые всплески между проигрыванием песен, закомментируйте эту строку в файле /etc/pulse/default.pa следующим образом:

#load-module module-suspend-on-idle

Все еще есть некоторые выпадения при одновременном воспроизведении двух источников, если я найду решение этой проблемы, я добавлю его в этот ответ.

Комментарии (1)