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


28

Я хотел бы использовать мой 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

Можете ли вы показать ошибки, которые вы получаете?
darryn.ten

Ответы:


9

Я установил его на 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 

pulseaudio-module-zeroconfотсутствует в части установки apt-get. Следует упомянуть, возможно, также pulseaudio --log-level=debugдля устранения любых проблем. На источнике звука (не на Raspberry Pi) вы должны запустить, paprefsчтобы легко просмотреть ваш Pulseaudio Conf (если у вас есть X11). И не забудьте перезапустить, pulseaudioесли сомневаетесь.
Вааб

7

Если вы хотите, чтобы pulseaudio запускался при загрузке, но как служба уровня пользователя, вы можете создать системный файл модуля. Это может помочь, так как 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 - полезное значение по умолчанию, но я действительно не знаю, что он делает.


По-видимому, мы можем вставить это ~/.config/systemd/user/pulseaudio.serviceи использовать systemd с --userфлагом, чтобы избежать привилегий root.
Jchook

6

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

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

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% процессорного времени. src-sinc-fastestтакже работал для меня, но использовать около 25% процессора. Другие могут работать так же. Это немного позже, я не совсем понимаю необходимость, но, похоже, это был магический ингредиент. Вы можете прочитать больше об этом здесь .

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

#load-module module-suspend-on-idle

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


При воспроизведении аудио по сети, PulseAudio использовал около 16% процессорного времени даже trivialдля меня.
Натан Осман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.