Wie bekomme ich PulseAudio zum Laufen?


28

Ich möchte meinen Raspberry Pi als PulseAudio-Senke verwenden, die Audio über das Netzwerk wiedergeben kann.

Für den Anfang möchte ich Pulseaudio lokal zum Laufen bringen und bin auf verschiedene Fehler gestoßen. Ich verwende das empfohlene Debian-Image.

Was ist die beste Vorgehensweise, um PulseAudio zum Laufen zu bringen?


Das habe ich bisher versucht:

Verfahren

Mein bisheriges Vorgehen sah ungefähr so ​​aus:

Installieren Sie Pulseaudio und VLC:

sudo apt-get install pulseaudio

Konfigurieren Sie GStreamer für die Verwendung der pulseaudio-Senke:

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

Laden Sie das Kernelmodul für das Audiogerät

sudo modprobe snd_bcm2835

Führen Sie VLC mit einem MP3 aus

vlc 

Probleme

VLC knackt wiederholt und druckt diesen Fehler:

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

Können Sie die Fehler anzeigen, die Sie erhalten?
darryn.ten

Antworten:


9

Ich habe es auf meinem Raspberry Pi mit der ALSA-Spüle arbeiten, mit Verfahren wie folgt:

So installieren Sie die erforderlichen Dateien:

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

So aktivieren Sie ALSA:

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

So richten Sie das Netzwerk ein:

sudo nano /etc/pulse/default.pa

und kommentiere die Zeilen aus:

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

Verwenden Sie zum Starten des pulseaudio-Servers:

pulseaudio -D

Sie sollten in der Lage sein zu testen, ob es funktioniert, indem Sie eine WAV-Datei mit paplay ( sudo apt-get install pulseaudio-utils) abspielen und auch über das Netzwerk, indem Sie die Senke in der Sound-Systemsteuerung Ihres Systems auswählen.

Möglicherweise können Sie auch im systemweiten Modus Folgendes einrichten :

sudo pulseaudio --system 

pulseaudio-module-zeroconffehlt im apt-get install Teil. Sollte vielleicht auch das erwähnen, um eventuelle pulseaudio --log-level=debugProbleme zu beheben. Auf der Tonquelle (nicht dem Himbeer-Pi) sollten Sie starten, paprefsum eine einfache Übersicht über Ihre pulseaudio-Konfiguration zu erhalten (wenn Sie X11 haben). Und vergessen Sie nicht, pulseaudioim Zweifelsfall neu zu starten .
Vaab

7

Wenn pulseaudio beim Booten gestartet werden soll, aber als Dienst auf Benutzerebene, können Sie eine System-Unit-Datei erstellen. Dies kann hilfreich sein, da pulseaudio es nicht vorzieht, im Systemmodus zu arbeiten. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Hier ist der Dienst, den ich in /etc/systemd/system/pulseaudio.service geschrieben habe

[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 = weist es an zu warten, bis sound.target initialisiert ist. BusName = verbindet es mit D-Bus WantedBy = session.target ist eine hilfreiche Standardeinstellung, aber ich weiß nicht wirklich, was es tut.


Anscheinend können wir dies ~/.config/systemd/user/pulseaudio.serviceeinfügen und systemd mit dem --userFlag verwenden, um Root-Rechte zu vermeiden.
Jchook

6

Es fiel mir schwer, mit dem analogen Ausgang pulseaudio auf Wheezy raspbian (28.10.2012) zum Laufen zu bringen. Das Folgende habe ich getan, um es im Pro-Sitzung-Modus (nicht im Systemmodus) zum Laufen zu bringen. Der Systemmodus funktioniert möglicherweise auch, ich habe es nicht versucht. Das Einrichten des Servers erfordert etwas mehr Arbeit. Ich habe diese Informationen an verschiedenen Stellen gefunden. Hoffentlich hilft es jemandem, sie hier zu sammeln.

Installiere pulseaudio und stelle sicher, dass der Benutzer (zB eric) Teil der Audio-Gruppe ist:

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

Ändern Sie die Datei /etc/asound.conf wie folgt. Dadurch wird pulseaudio so eingerichtet, dass es standardmäßig als ein alsa-Gerät verwendet wird, sodass Anwendungen es ohne zusätzliche Konfiguration verwenden. Die ersten beiden Erklärungen (einschließlich der kommentierten) befanden sich in der Originaldatei.

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 }

Fügen Sie die folgenden Zeilen zu /etc/pulse/daemon.conf hinzu:

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

trivialist die Methode mit der niedrigsten Qualität, verwendet jedoch ca. 6% CPU. src-sinc-fastestfunktionierte auch für mich, aber etwa 25% CPU verwenden. Andere können auch funktionieren. Dieses spätere Stück verstehe ich nicht ganz, aber es schien die magische Zutat zu sein. Hier können Sie mehr darüber lesen .

Zum Schluss kommentieren Sie diese Zeile in /etc/pulse/default.pa wie folgt aus, um die Audio-Pops zwischen den Songs zum Schweigen zu bringen:

#load-module module-suspend-on-idle

Es gibt immer noch einige Aussetzer, wenn zwei Quellen gleichzeitig wiedergegeben werden. Wenn ich ein Mittel dafür finde, werde ich diese Antwort ergänzen.


Bei der Audiowiedergabe über das Netzwerk verwendete PulseAudio selbst bei trivialmir etwa 16% der CPU .
Nathan Osman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.