Як змусити 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 -D

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

Можливо, ви також зможете налаштувати в загальносистемному режимі за допомогою:

sudo pulseaudio --system 

pulseaudio-module-zeroconfвідсутня в частині apt-get install. Слід згадати, можливо, також про pulseaudio --log-level=debugусунення будь-яких проблем. У джерелі звуку (не в малиновому пі) вам слід запустити, paprefsщоб легко переглянути свій пульс-аудіо конф (якщо у вас X11). І не забудьте перезапустити, pulseaudioколи сумніваєтесь.
vaab

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

Перед = каже йому зачекати, поки не почне ініціалізація sound.target. BusName = підключає його до D-Bus WantedBy = session.target є корисним за замовчуванням, але я не знаю, що це робить.


Мабуть, ми можемо поставити це ~/.config/systemd/user/pulseaudio.serviceі використовувати systemd з --userпрапором, щоб уникнути кореневих привілеїв.
jchook

6

Мені було важко отримати імпульсний запуск на Wheezy raspbian (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.