Reindirizza l'audio a un altro dispositivo AirPlay


20

Sto configurando Mopidy su Raspbian in modo da poter usare Raspberry Pi come jukebox Spotify (e file locali). So che l'uscita audio analogica del Raspberry Pi non è eccezionale.

C'è un modo per reindirizzare tutto l'audio dal Raspberry Pi a un dispositivo AirPlay (un Airport Express, ad esempio)?

Sarebbe bello se potessi fare qualsiasi cosa anche dalla riga di comando, quindi potrei impostare alcuni script per cambiare dispositivo diverso.


Questa è un'ottima domanda. Adoro il airplay e ha senso usarlo su un Pi. Scaverò intorno a me stesso su quella, ma buona domanda! +1
Piotr Kula

Da quello che ho capito, può essere fatto usando PulseAudio. Sto scavando anche io.
leolobato,

dai un'occhiata a ciò di cui stiamo discutendo qui raspberrypi.org/phpBB3/…
jmp909

So che questo è un po 'fuori tema - ma se non ti interessa il playbac remoto, che ne dici di un bel DAC USB?
petr

Risposte:


13

È possibile utilizzare il modulo mpd, pulseaudio e raop2, se necessario:

  • mpd per la gestione di playlist, libreria, ecc. ( sudo apt-get install mpd)
  • pulseaudio per la gestione delle uscite audio: raop per AirPlay o qualsiasi altro dispositivo di uscita come jack analogico, HDMI, servizio di streaming http, ecc. sudo apt-get install pulseaudio)
  • modulo raop2 per pulseaudio se il modulo raop originale incorporato in pulseaudio non funziona

Ho dovuto costruire pulseaudio dalla fonte per ottenere una versione aggiornata del modulo RAOP per pulseaudio.


Ecco cosa ho fatto per farlo funzionare (potrebbe lamentarsi dei pacchetti mancanti, solo sudo apt-get installloro):

Installa MPD

sudo apt-get install mpd

Installa PulseAudio

Scelta A: hai un vecchio dispositivo AirPlay o non hai bisogno dello streaming UDP.

È più facile ma meno compatibile.

sudo apt-get install pulseaudio

Scelta B: vuoi una migliore compatibilità e supporto per lo streaming TCP e UDP

Quindi è necessario il modulo raop2 per pulseaudio, che significa costruire PA dalla sorgente.

Installa git se non l'hai già fatto e crea pulseaudio (vedi le istruzioni ufficiali ):

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

Durante la mia installazione, ho dovuto ricollegare manualmente libpulse.so.0:

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

o, secondo le tue preferenze:

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

Configura tutto

Configurazione iniziale MPD

Ora dobbiamo configurare MPD:

sudo vi /etc/mpd.conf

In quel file, imposta quanto segue:

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"

Dovremo modificare l'output, ma prima abbiamo bisogno del nome del sink di pulseaudio.

Lavelli PulseAudio

Avahi / zeroconf è bello avere perché consentirà la scoperta di dispositivi AirPlay (tramite zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Ora possiamo avviare pulseaudio e provare a caricare i moduli RAOP:

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

Ecco l'output sulla mia configurazione:

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>

È quindi necessario modificare /etc/mpd.confnuovamente e aggiungere i seguenti output:

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

Aggiungi uno di questi blocchi per ogni dispositivo AirPlay su cui desideri trasmettere musica in streaming.

Configurazione PulseAudio

L'ultima parte è configurare PA:

sudo vi /etc/pulse/client.conf

Uncomment autospawn = yes, questo farà sì che pulseaudio si avvii automaticamente quando è necessario.

sudo vi /etc/pulse/default.pa

Aggiungi la seguente riga in fondo:

load-module module-raop-discover

In questo modo pulseaudio caricherà il modulo di rilevamento RAOP all'avvio.

Passo finale

Dovrebbe funzionare ora. Avvia MPD (fermalo prima se è in esecuzione):

sudo /etc/init.d/mpd start

Aspetta un po ', ci vogliono almeno 10-15 secondi sul mio RasPI prima che il demone possa funzionare correttamente.

Aggiorna la tua libreria musicale (e attendi che finisca):

sudo apt-get install mpc
mpc update

Abilita uscite a piacimento (di seguito elencheremo le uscite MPD configurate e abiliterà la prima):

mpc outputs
mpc enable 1

Ora usa il tuo client MPD preferito per ascoltare un po 'di musica. Sto usando ncmpcppdalla riga di comando e MPDroid sul mio telefono / tablet.

Risoluzione dei problemi

Avvia mpd in dettaglio, pulseaudio con il massimo livello di registrazione e monitora i log:

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

Prova a far funzionare pulseaudio per primo. Basta caricare pulseaudio, caricare il modulo di rilevamento RAOP, elencare i sink, impostare il sink predefinito e provare a riprodurre qualcosa:

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

Una volta che pulseaudio funziona, prova a far funzionare MPD con esso.


1
Questo è esattamente quello che stavo cercando! Ho un mopidy in esecuzione su un Raspberry Pi. Proverò questo e aggiornerò per dirti se ha funzionato!
leolobato,

2

Sembra che pulseaudio-module-raop sia quello che stai cercando. Questa guida ha una descrizione dettagliata su come configurarlo in Ubuntu.


1
In generale, una risposta che fornisce spiegazioni dettagliate è meglio di un collegamento. I collegamenti possono trasferirsi o morire. Ancora più importante, spiegare un po 'di pulseaudio-module-raop può essere una buona idea ..
ramblinjan,

2

Trascorso del tempo cercando di configurare Airplay tramite Raop / PulseAudio sul nuovo Raspberry Pi 3 usando Raspbian Jessie con scarso successo. Consiglio vivamente forked-daapd :

Questa è una versione molto aggiornata dell'originale forked-daapd 0.19, un media server Linux / FreeBSD DAAP (iTunes) con supporto per dispositivi AirPlay, Apple Remote (e compatibili), MPD, Spotify, streaming mp3 e radio internet.

L'installazione è stata molto semplice e ho installato tutto in circa 10 minuti. Ecco le istruzioni di installazione come dettagliato qui :

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.
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.