Come far funzionare PulseAudio?


28

Vorrei utilizzare il mio Raspberry Pi come un lavandino PulseAudio in grado di riprodurre l'audio tramite la rete.

Per cominciare, voglio far funzionare Pulseaudio localmente e ho riscontrato vari errori. Sto usando l'immagine Debian consigliata.

Qual è la procedura migliore per far funzionare PulseAudio?


Questo è quello che ho provato finora:

Procedura

Finora la mia procedura era simile alla seguente:

Installa Pulseaudio e VLC:

sudo apt-get install pulseaudio

Configura GStreamer per usare il sink di pulseaudio:

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

Carica il modulo del kernel per il dispositivo audio

sudo modprobe snd_bcm2835

Esegui VLC con un mp3

vlc 

I problemi

VLC si rompe ripetutamente, stampando questo errore:

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

Puoi mostrare gli errori che stai riscontrando?
darryn.ten,

Risposte:


9

Ho funzionato sul mio Raspberry Pi usando il lavandino ALSA, con la procedura come segue:

Per installare i file necessari:

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

Per abilitare ALSA:

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

Per configurare la rete:

sudo nano /etc/pulse/default.pa

e decommenta le linee:

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

Per avviare il server pulseaudio, utilizzare:

pulseaudio -D

Dovresti essere in grado di provare che funziona riproducendo un file wav con paplay ( sudo apt-get install pulseaudio-utils) e anche sulla rete selezionando il sink nel pannello di controllo audio del sistema.

Potresti anche essere in grado di impostare in modalità a livello di sistema con:

sudo pulseaudio --system 

pulseaudio-module-zeroconfmanca nella parte di installazione di apt-get. Dovrebbe menzionare forse anche il pulseaudio --log-level=debugper risolvere eventuali problemi. Sulla sorgente sonora (non sul raspberry pi), dovresti avviarti paprefsper visualizzare facilmente la panoramica di pulseaudio (se hai X11). E non dimenticare di riavviare in pulseaudiocaso di dubbio.
vaab,

7

Se si desidera avviare pulseaudio all'avvio, ma come servizio a livello di utente, è possibile creare un file di unità di sistema. Ciò può essere d'aiuto, poiché pulseaudio non preferisce funzionare in modalità di sistema. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Ecco il servizio che ho scritto in /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

Prima = gli dice di attendere fino a dopo l'inizializzazione di sound.target. BusName = lo collega a D-Bus WantedBy = session.target è un'utile impostazione predefinita, ma non so davvero cosa faccia.


Apparentemente possiamo inserirlo ~/.config/systemd/user/pulseaudio.servicee usare systemd con il --userflag per evitare i privilegi di root.
Jchook,

6

Ho avuto difficoltà a far funzionare pulseaudio su Wheezy raspbian (28-10-2012) usando l'uscita analogica. Quello che segue è quello che ho fatto solo per farlo funzionare in modalità per sessione (non in modalità di sistema). Anche la modalità di sistema potrebbe funzionare, non l'ho mai provata. L'impostazione del server richiederà un po 'più di lavoro. Ho trovato queste informazioni in vari luoghi, spero che raccoglierle qui possa aiutare qualcuno.

Installa pulseaudio e assicurati che l'utente (ad es. Eric) faccia parte del gruppo audio:

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

Cambia /etc/asound.conf in questo modo. Questo imposta pulseaudio per essere utilizzato come dispositivo alsa per impostazione predefinita, quindi le applicazioni lo usano senza alcuna configurazione aggiuntiva. Le prime due dichiarazioni (compresa quella commentata) erano nel file originale.

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 }

Aggiungi le seguenti righe a /etc/pulse/daemon.conf:

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

trivialè il metodo di qualità più bassa, ma utilizza circa il 6% di CPU. src-sinc-fastestha funzionato anche per me, ma usa circa il 25% di CPU. Anche altri potrebbero funzionare. In seguito non capisco perfettamente la necessità, ma sembrava essere l'ingrediente magico. Puoi leggere di più qui .

Infine, per mettere a tacere l'audio pop tra le riproduzioni dei brani, commentare questa riga in /etc/pulse/default.pa come segue:

#load-module module-suspend-on-idle

Ci sono ancora alcuni abbandoni quando due fonti suonano contemporaneamente, se scopro un rimedio per questo aggiungerò a questa risposta.


Durante la riproduzione di audio in rete, PulseAudio utilizzava circa il 16% di CPU anche con trivialme.
Nathan Osman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.