Rediriger l'audio vers un autre appareil AirPlay

20

Je configure Mopidy sur Raspbian pour pouvoir utiliser le Raspberry Pi comme juke-box Spotify (et fichiers locaux). Je sais que la sortie audio analogique du Raspberry Pi n'est pas géniale.

Existe-t-il un moyen de rediriger tout l'audio du Raspberry Pi vers un appareil AirPlay (un Airport Express, par exemple)?

Ce serait formidable si je pouvais également tout faire à partir de la ligne de commande, afin que je puisse configurer certains scripts pour changer de périphérique.

leolobato
la source
C’est une grande question. J'adore Airplay et cela a du sens de l'utiliser sur un Pi. Va creuser autour de moi sur cette seule mais bonne question! +1
Piotr Kula
D'après ce que j'ai compris, cela peut être fait en utilisant PulseAudio. Je fouille aussi.
leolobato
jetez un œil à ce dont nous discutons ici raspberrypi.org/phpBB3/…
jmp909
Je sais que c'est un peu hors sujet - mais si vous n'êtes pas après le playbac à distance, qu'en est-il d'un joli DAC USB?
petr

Réponses:

13

Vous pouvez utiliser les modules mpd, pulseaudio et raop2, si nécessaire:

  • mpd pour gérer les listes de lecture, la bibliothèque, etc. ( sudo apt-get install mpd)
  • pulseaudio pour la gestion des sorties audio: raop pour AirPlay, ou tout autre périphérique de sortie tel qu'une prise analogique, HDMI, service de streaming http, etc. ( sudo apt-get install pulseaudio)
  • module raop2 pour pulseaudio si le module raop d'origine intégré à pulseaudio ne fonctionne pas

J'ai dû construire pulseaudio à partir de la source afin d'obtenir une version mise à jour du module RAOP pour pulseaudio.


Voici ce que j'ai fait pour le faire fonctionner (il peut se plaindre de paquets manquants, juste sudo apt-get installeux):

Installer MPD

sudo apt-get install mpd

Installez PulseAudio

Choix A: vous avez un ancien appareil AirPlay ou vous n'avez pas besoin de streaming UDP.

C'est plus simple mais moins compatible.

sudo apt-get install pulseaudio

Choix B: vous voulez une meilleure compatibilité et une prise en charge du streaming TCP et UDP

Ensuite, vous avez besoin d'un module raop2 pour pulseaudio, ce qui signifie construire une sonorisation à partir des sources.

Installez git si vous ne l'avez pas déjà fait, et construisez pulseaudio (voir les instructions officielles ):

sudo apt-get install git intltool autoconf build-essential
cd
git clone https://github.com/hfujita/pulseaudio-raop2
cd pulseaudio-raop2
./bootstrap.sh
make
sudo make install

Lors de ma configuration, j'ai dû créer un lien symbolique vers libpulse.so.0 manuellement:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo ln -s `cd;pwd`/pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0

ou, selon votre préférence:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo mv pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2

Configurez tout

Configuration initiale du MPD

Maintenant, nous devons configurer MPD:

sudo vi /etc/mpd.conf

Dans ce fichier, définissez les éléments suivants:

music_directory "/path/to/your/music"
user "mpd"
bind_to_address "127.0.0.1"
bind_to_address "192.168.x.y"
bind_to_address "2a01:xzy....your IPv6 if you want"

Nous devrons éditer la sortie, mais nous avons d'abord besoin du nom du récepteur pulseaudio.

Éviers PulseAudio

Avahi / zeroconf est agréable à avoir car il permettra la découverte des appareils AirPlay (via zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Nous pouvons maintenant démarrer pulseaudio et essayer de charger les modules RAOP:

pulseaudio --start --log-target=syslog -vvvv --log-level=debug
pacmd load-module module-raop-discover
pacmd list-sinks | grep name:

Voici la sortie sur ma configuration:

name: <raop_output.Freebox-Player.local>
name: <raop_output.Freebox-Server.local>
name: <raop_output.Freebox-Player.local.2>
name: <raop_output.Freebox-Server.local.2>

Vous devez ensuite modifier à /etc/mpd.confnouveau et ajouter les sorties suivantes:

audio_output {
    type            "pulse"
    name            "Freebox Player"
    sink            "raop_output.Freebox-Player.local"
    format          "44100:24:1"
}

Ajoutez l'un de ces blocs pour chaque appareil AirPlay sur lequel vous souhaitez diffuser de la musique.

Configuration de PulseAudio

La dernière partie consiste à configurer PA:

sudo vi /etc/pulse/client.conf

Ne commentez pas autospawn = yes, cela fera démarrer pulseaudio automatiquement quand cela sera nécessaire.

sudo vi /etc/pulse/default.pa

Ajoutez la ligne suivante en bas:

load-module module-raop-discover

Cela fera pulseaudio charger le module de découverte RAOP lors de son démarrage.

Dernière étape

Cela devrait fonctionner maintenant. Démarrez MPD (arrêtez-le d'abord s'il fonctionne):

sudo /etc/init.d/mpd start

Attendez un peu, cela prend au moins 10-15 secondes sur mon RasPI avant que le démon puisse fonctionner correctement.

Mettez à jour votre bibliothèque musicale (et attendez qu'elle se termine):

sudo apt-get install mpc
mpc update

Activez les sorties à volonté (la liste suivante répertorie les sorties MPD configurées et active la première):

mpc outputs
mpc enable 1

Utilisez maintenant votre client MPD préféré pour écouter de la musique. J'utilise en ligne ncmpcppde commande et MPDroid sur mon téléphone / tablette.

Dépannage

Démarrez mpd dans verbose, pulseaudio avec un niveau de journalisation maximal et surveillez les journaux:

mpd --verbose
pulseaudio --start --log-target=syslog --log-level=debug -vvvv
tail -f /var/log/mpd/mpd.log
tail -f /var/log/syslog

Essayez d'abord de faire fonctionner pulseaudio. Il suffit de charger pulseaudio, de charger le module de découverte RAOP, de répertorier les récepteurs, de configurer le récepteur par défaut et d'essayer de jouer quelque chose:

paplay /usr/share/sounds/alsa/Front_Center.wav

Une fois que pulseaudio fonctionne, essayez de le faire fonctionner avec MPD.

Benoit Duffez
la source
1
C'est exactement ce que je cherchais! J'ai un mopidy fonctionnant sur un Raspberry Pi. Je vais essayer cela et mettre à jour pour vous dire si cela a fonctionné!
leolobato
2

Semblez que pulseaudio-module-raop est ce que vous recherchez. Ce guide a une description détaillée sur la façon de configurer cela dans Ubuntu.

Lukas Vermeer
la source
1
D'une manière générale, une réponse qui fournit une explication détaillée vaut mieux qu'un lien. Les liens peuvent se déplacer ou mourir. Plus important encore, expliquer un peu sur pulseaudio-module-raop peut être une bonne idée ..
ramblinjan
2

J'ai passé un peu de temps à essayer de configurer Airplay via Raop / PulseAudio sur le nouveau Raspberry Pi 3 en utilisant Raspbian Jessie avec très peu de succès. Je recommande fortement forked-daapd :

Il s'agit d'une version très mise à jour de l'original forked-daapd 0.19, un serveur multimédia Linux / FreeBSD DAAP (iTunes) avec prise en charge des appareils AirPlay, Apple Remote (et compatibles), MPD, Spotify, streaming mp3 et radio Internet.

L'installation a été très simple et j'ai eu le tout opérationnel en 10 minutes environ. Voici les instructions d'installation détaillées ici :

1a. If you use Jessie then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian jessie/armhf/
or
1b. If you use Wheezy then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian wheezy-backports/armhf/
2. Run sudo apt-get update and then sudo apt-get install forked-daapd
3. Edit the config file /etc/forked-daapd.conf and (re)start the server with sudo /etc/init.d/forked-daapd restart

Optional - how to add support for Spotify:
1. Add deb http://apt.mopidy.com/ stable main contrib non-free to /etc/apt/sources.list
2. Run sudo apt-get update and then sudo apt-get install libspotify-dev
3. Restart forked-daapd and enter credentials as described in the instructions.
4. Check the log to see how it is working. It should start loading your playlists.
Nate
la source