¿Cómo hacer funcionar PulseAudio?

28

Me gustaría usar mi Raspberry Pi como un receptor PulseAudio que puede reproducir audio a través de la red.

Para empezar, quiero que Pulseaudio se ejecute localmente y me he encontrado con varios errores. Estoy usando la imagen recomendada de Debian.

¿Cuál es el mejor procedimiento para poner en funcionamiento PulseAudio?


Esto es lo que he intentado hasta ahora:

Procedimiento

Mi procedimiento hasta ahora se parecía a lo siguiente:

Instale Pulseaudio y VLC:

sudo apt-get install pulseaudio

Configure GStreamer para usar el receptor de pulseaudio:

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

Cargue el módulo del kernel para el dispositivo de audio

sudo modprobe snd_bcm2835

Ejecute VLC con un mp3

vlc 

Problemas

VLC se agrieta repetidamente, imprimiendo este error:

[0x7503d0] alsa audio output error: cannot write: Broken pipe
Bengt
fuente
¿Puedes mostrar los errores que estás recibiendo?
darryn.ten

Respuestas:

9

Lo tengo funcionando en mi Raspberry Pi usando el fregadero ALSA, con el siguiente procedimiento:

Para instalar los archivos necesarios:

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

Para habilitar ALSA:

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

Para configurar redes:

sudo nano /etc/pulse/default.pa

y descomentar las líneas:

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

Para iniciar el servidor pulseaudio, use:

pulseaudio -D

Debería poder probar que funciona reproduciendo un archivo wav con paplay ( sudo apt-get install pulseaudio-utils), y también a través de la red seleccionando el sumidero en el panel de control de sonido de su sistema.

También puede configurarlo en modo de todo el sistema con:

sudo pulseaudio --system 
Adam MW
fuente
pulseaudio-module-zeroconffalta en la parte de instalación de apt-get. Debería mencionar tal vez también pulseaudio --log-level=debugpara solucionar cualquier problema. En la fuente de sonido (no en la frambuesa pi), debe iniciar paprefspara ver fácilmente su configuración de pulseaudio (si tiene X11). Y no olvide reiniciar pulseaudiocuando tenga dudas.
vaab
7

Si desea que pulseaudio se inicie en el arranque, pero como servicio de nivel de usuario, puede crear un archivo de unidad systemd. Esto puede ayudar, ya que pulseaudio no prefiere ejecutarse en modo de sistemas. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Aquí está el servicio que escribí en /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

Antes = le dice que espere hasta que se inicialice sound.target. BusName = lo conecta a D-Bus WantedBy = session.target es un valor predeterminado útil, pero realmente no sé qué hace.

semitonos
fuente
Aparentemente podemos poner esto ~/.config/systemd/user/pulseaudio.servicey usar systemd con la --userbandera para evitar privilegios de root.
jchook
6

Tuve dificultades para ejecutar Pulseaudio en Wheezy raspbian (2012-10-28) usando la salida analógica. Lo siguiente es lo que hice solo para que funcione en modo por sesión (no en modo sistema). El modo del sistema puede funcionar también, no lo he intentado. La configuración del servidor requerirá más trabajo. Encontré esta información en varios lugares, espero que reunirla aquí ayude a alguien.

Instale pulseaudio y asegúrese de que el usuario (por ejemplo, eric) sea parte del grupo de audio:

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

Cambiar /etc/asound.conf se parece a lo siguiente. Esto configura pulseaudio para que se use como dispositivo alsa de manera predeterminada, de modo que las aplicaciones lo usen sin ninguna configuración adicional. Las dos primeras declaraciones (incluida la comentada) estaban en el archivo original.

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 }

Agregue las siguientes líneas a /etc/pulse/daemon.conf:

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

trivialEs el método de menor calidad, pero utiliza aproximadamente 6% de CPU. src-sinc-fastestTambién funcionó para mí, pero uso aproximadamente un 25% de CPU. Otros pueden funcionar también. Este último bit no entiendo la necesidad, pero parecía ser el ingrediente mágico. Puedes leer más sobre esto aquí .

Finalmente, para silenciar los pops de audio entre reproducciones de canciones, comente esta línea en /etc/pulse/default.pa como sigue:

#load-module module-suspend-on-idle

Todavía hay algunos abandonos cuando se reproducen dos fuentes a la vez, si descubro un remedio para eso, agregaré a esta respuesta.

ergosys
fuente
Cuando reproducía audio a través de la red, PulseAudio usaba aproximadamente un 16% de CPU incluso trivialpara mí.
Nathan Osman