Jak uruchomić PulseAudio?


28

Chciałbym używać mojego Raspberry Pi jako zlewu PulseAudio, który może odtwarzać dźwięk przez sieć.

Na początek chcę, aby Pulseaudio działało lokalnie i napotkało różne błędy. Używam zalecanego obrazu Debiana.

Jaka jest najlepsza procedura uruchomienia PulseAudio?


Do tej pory próbowałem:

Procedura

Moja dotychczasowa procedura wyglądała mniej więcej tak:

Zainstaluj Pulseaudio i VLC:

sudo apt-get install pulseaudio

Skonfiguruj GStreamer do korzystania z zlewu pulseaudio:

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

Załaduj moduł jądra dla urządzenia audio

sudo modprobe snd_bcm2835

Uruchom VLC z mp3

vlc 

Problemy

VLC pęka wielokrotnie, drukując ten błąd:

[0x7503d0] alsa audio output error: cannot write: Broken pipe

Czy możesz pokazać błędy, które otrzymujesz?
darryn.ten

Odpowiedzi:


9

Mam go działa na moim Raspberry Pi przy użyciu zlewu ALSA, z następującą procedurą:

Aby zainstalować niezbędne pliki:

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

Aby włączyć ALSA:

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

Aby skonfigurować sieć:

sudo nano /etc/pulse/default.pa

i odkomentuj linie:

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

Aby uruchomić serwer pulseaudio, użyj:

pulseaudio -D

Powinieneś być w stanie przetestować, czy to działa, odtwarzając plik wav za pomocą paplay ( sudo apt-get install pulseaudio-utils), a także przez sieć, wybierając zlew w panelu sterowania dźwiękiem systemu.

Możliwe jest również skonfigurowanie w trybie ogólnosystemowym za pomocą:

sudo pulseaudio --system 

pulseaudio-module-zeroconfbrakuje w części instalacyjnej apt-get. Powinien również wspomnieć pulseaudio --log-level=debugo rozwiązywaniu problemów. Na źródle dźwięku (nie na raspberry pi) powinieneś uruchomić, paprefsaby łatwo przejrzeć swoją pulseaudio conf (jeśli masz X11). I nie zapomnij uruchomić ponownie pulseaudiow razie wątpliwości.
vaab

7

Jeśli chcesz, aby pulseaudio uruchamiało się podczas rozruchu, ale jako usługa na poziomie użytkownika, możesz utworzyć plik jednostki systemowej. Może to pomóc, ponieważ pulseaudio nie woli działać w trybie systemowym. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Oto usługa, którą napisałem w /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

Przed = każe poczekać, aż dźwięk się zainicjuje. BusName = łączy go z D-Bus WantedBy = session.target jest pomocnym domyślnym, ale tak naprawdę nie wiem, co robi.


Najwyraźniej możemy to włączyć ~/.config/systemd/user/pulseaudio.servicei użyć systemd z --userflagą, aby uniknąć uprawnień roota.
jchook

6

Trudno mi było uruchomić pulseaudio na Wheezy raspbian (2012-10-28) przy użyciu wyjścia analogowego. Oto, co zrobiłem, aby działało w trybie na sesję (nie w trybie systemowym). Tryb systemowy może również działać, nie próbowałem tego. Konfiguracja serwera będzie wymagała nieco więcej pracy. Znalazłem te informacje w różnych miejscach, mam nadzieję, że zebranie ich tutaj pomoże komuś.

Zainstaluj pulseaudio i upewnij się, że użytkownik (np. Eric) jest częścią grupy audio:

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

Zmiana /etc/asound.conf wygląda następująco. Ustawia to domyślnie pulseaudio jako urządzenie alsa, więc aplikacje używają go bez dodatkowej konfiguracji. Pierwsze dwie deklaracje (w tym komentowana) znajdowały się w oryginalnym pliku.

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 }

Dodaj następujące wiersze do /etc/pulse/daemon.conf:

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

trivialjest metodą o najniższej jakości, ale zużywa około 6% procesora. src-sinc-fastestrównież działało dla mnie, ale używaj około 25% procesora. Inni też mogą działać. Później nieco nie rozumiem potrzeby, ale wydawało się, że to magiczny składnik. Możesz przeczytać więcej na ten temat tutaj .

Na koniec, aby wyciszyć dźwięk pojawiający się między utworami, skomentuj ten wiersz w pliku /etc/pulse/default.pa w następujący sposób:

#load-module module-suspend-on-idle

Nadal występują pewne zaniechania, gdy odtwarzane są jednocześnie dwa źródła, jeśli znajdę lekarstwo na to, dodam do tej odpowiedzi.


Podczas odtwarzania dźwięku przez sieć PulseAudio zużywało około 16% procesora, nawet trivialdla mnie.
Nathan Osman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.