Comment faire fonctionner PulseAudio?


28

Je voudrais utiliser mon Raspberry Pi comme un récepteur PulseAudio pouvant lire du son via le réseau.

Pour commencer, je veux faire fonctionner Pulseaudio localement et j'ai rencontré diverses erreurs. J'utilise l'image Debian recommandée.

Quelle est la meilleure procédure pour faire fonctionner PulseAudio?


Voici ce que j'ai essayé jusqu'à présent:

Procédure

Jusqu'à présent, ma procédure ressemblait à ceci:

Installez Pulseaudio et VLC:

sudo apt-get install pulseaudio

Configurez GStreamer pour utiliser le récepteur pulseaudio:

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

Chargez le module du noyau pour le périphérique audio

sudo modprobe snd_bcm2835

Exécutez VLC avec un mp3

vlc 

Problèmes

VLC se fissure à plusieurs reprises, imprimant cette erreur:

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

Pouvez-vous montrer les erreurs que vous obtenez?
darryn.ten

Réponses:


9

Je l'ai fait fonctionner sur mon Raspberry Pi en utilisant le récepteur ALSA, avec la procédure suivante:

Pour installer les fichiers nécessaires:

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

Pour activer ALSA:

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

Pour configurer la mise en réseau:

sudo nano /etc/pulse/default.pa

et décommenter les lignes:

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

Pour démarrer le serveur pulseaudio, utilisez:

pulseaudio -D

Vous devriez pouvoir tester son fonctionnement en lisant un fichier wav avec paplay ( sudo apt-get install pulseaudio-utils), et également sur le réseau en sélectionnant le récepteur dans le panneau de contrôle du son de votre système.

Vous pourrez peut-être également configurer en mode système avec:

sudo pulseaudio --system 

pulseaudio-module-zeroconfest manquant dans la partie d'installation d'apt-get. Devrait mentionner peut-être aussi le pulseaudio --log-level=debugdépannage de tout problème. Sur la source sonore (pas la framboise pi), vous devriez lancer paprefspour visualiser facilement votre conf pulseaudio (si vous avez X11). Et n'oubliez pas de redémarrer en pulseaudiocas de doute.
vaab

7

Si vous souhaitez que pulseaudio démarre au démarrage, mais en tant que service de niveau utilisateur, vous pouvez créer un fichier d'unité systemd. Cela peut être utile, car pulseaudio ne préfère pas s'exécuter en mode système. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Voici le service que j'ai écrit dans /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

Avant = lui indique d'attendre jusqu'à ce que sound.target s'initialise. BusName = le connecte à D-Bus WantedBy = session.target est un défaut utile, mais je ne sais pas vraiment ce qu'il fait.


Apparemment, nous pouvons mettre cela ~/.config/systemd/user/pulseaudio.serviceet utiliser systemd avec le --userdrapeau pour éviter les privilèges root.
jchook

6

J'ai eu du mal à faire fonctionner pulseaudio sur Wheezy raspbian (2012-10-28) en utilisant la sortie analogique. Voici ce que j'ai fait pour le faire fonctionner en mode par session (pas en mode système). Le mode système peut également fonctionner, je ne l'ai pas essayé. La configuration du serveur nécessitera un peu plus de travail. J'ai trouvé ces informations à divers endroits, j'espère que les rassembler ici aidera quelqu'un.

Installez pulseaudio et assurez-vous que l'utilisateur (par exemple eric) fait partie du groupe audio:

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

Modifiez /etc/asound.conf comme suit. Ceci configure pulseaudio pour être utilisé comme périphérique alsa par défaut afin que les applications l'utilisent sans aucune configuration supplémentaire. Les deux premières déclarations (dont celle commentée) figuraient dans le dossier d'origine.

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 }

Ajoutez les lignes suivantes à /etc/pulse/daemon.conf:

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

trivialest la méthode de qualité la plus basse, mais utilise environ 6% de CPU. src-sinc-fastesta également fonctionné pour moi, mais utilise environ 25% de CPU. D'autres peuvent également fonctionner. Ce peu plus tard, je ne comprends pas très bien le besoin, mais cela semblait être l'ingrédient magique. Vous pouvez en lire plus ici .

Enfin, pour couper le son entre les morceaux, commentez cette ligne dans /etc/pulse/default.pa comme suit:

#load-module module-suspend-on-idle

Il y a encore des abandons lorsque deux sources jouent en même temps, si je découvre un remède pour cela, j'ajouterai à cette réponse.


Lors de la lecture audio sur le réseau, PulseAudio utilisait environ 16% de CPU même avec trivialmoi.
Nathan Osman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.