Leiten Sie Audio auf ein anderes AirPlay-Gerät um

20

Ich richte Mopidy auf Raspbian ein, damit ich den Raspberry Pi als Spotify-Jukebox (und als Jukebox für lokale Dateien) verwenden kann. Ich weiß, dass der analoge Audio-Ausgang des Raspberry Pi nicht großartig ist.

Gibt es eine Möglichkeit, alle Audiodaten vom Raspberry Pi auf ein AirPlay-Gerät (z. B. einen Airport Express) umzuleiten?

Es wäre großartig, wenn ich auch alles von der Kommandozeile aus machen könnte, so dass ich einige Skripte einrichten könnte, um verschiedene Geräte zu wechseln.

leolobato
quelle
Das ist eine gute Frage. Ich liebe das Airplay und das macht einfach Sinn, es auf einem Pi zu benutzen. Werde mich in dieser aber guten Frage umgraben! +1
Piotr Kula
Soweit ich es verstanden habe, kann es mit PulseAudio durchgeführt werden. Ich grabe auch herum.
Leolobato
Werfen Sie
Ich weiß, dass dies ein wenig vom Thema abweicht - aber wenn Sie nicht auf Remote-Playbac aus sind, was ist mit ein paar netten USB-DACs?
Petr

Antworten:

13

Bei Bedarf können Sie mpd-, pulseaudio- und raop2-Module verwenden:

  • mpd zum Verwalten von Wiedergabelisten, Bibliotheken usw. ( sudo apt-get install mpd)
  • pulseaudio zum Verwalten von Audioausgängen: raop für AirPlay oder jedes andere Ausgabegerät wie Analogbuchse, HDMI, HTTP-Streaming-Dienst usw. ( sudo apt-get install pulseaudio)
  • raop2 modul für pulseaudio wenn das in pulseaudio eingebaute original raop modul nicht funktioniert

Ich musste pulseaudio aus dem Quellcode erstellen, um eine aktualisierte Version des RAOP-Moduls für pulseaudio zu erhalten.


Hier ist, was ich getan habe, um es zum Laufen zu bringen (es kann sich über fehlende Pakete beschweren, nur über sudo apt-get installdiese):

Installieren Sie MPD

sudo apt-get install mpd

Installieren Sie PulseAudio

Wahl A: Sie haben ein altes AirPlay-Gerät oder benötigen kein UDP-Streaming.

Es ist einfacher, aber weniger kompatibel.

sudo apt-get install pulseaudio

Wahl B: Sie möchten eine bessere Kompatibilität und Unterstützung für TCP- und UDP-Streaming

Dann benötigen Sie das raop2-Modul für pulseaudio, was bedeutet, dass Sie PA aus dem Quellcode erstellen.

Installiere git, falls du es noch nicht getan hast, und erstelle pulseaudio (siehe offizielle Anleitung ):

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

Bei meinem Setup musste ich libpulse.so.0 manuell symlinken:

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

oder nach Ihren Wünschen:

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

Alles konfigurieren

MPD-Ersteinrichtung

Jetzt müssen wir MPD einrichten:

sudo vi /etc/mpd.conf

Legen Sie in dieser Datei Folgendes fest:

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"

Wir müssen die Ausgabe bearbeiten, aber wir müssen zuerst den Namen der pulseaudio-Senke eingeben.

PulseAudio sinkt

Avahi / zeroconf ist nett zu haben, weil es die Erkennung von AirPlay-Geräten ermöglicht (über zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Jetzt können wir pulseaudio starten und versuchen, die RAOP-Module zu laden:

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

Hier ist die Ausgabe zu meinem Setup:

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>

Sie müssen dann /etc/mpd.conferneut bearbeiten und die folgenden Ausgaben hinzufügen:

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

Fügen Sie für jedes AirPlay-Gerät, zu dem Sie Musik streamen möchten, einen dieser Blöcke hinzu.

PulseAudio Konfiguration

Der letzte Teil ist das Einrichten von PA:

sudo vi /etc/pulse/client.conf

Unkommentiert autospawn = yeslässt dies pulseaudio automatisch starten, wenn es benötigt wird.

sudo vi /etc/pulse/default.pa

Fügen Sie die folgende Zeile unten hinzu:

load-module module-raop-discover

Dadurch wird pulseaudio veranlasst, das RAOP-Erkennungsmodul beim Start zu laden.

Letzter Schritt

Es sollte jetzt funktionieren. Starten Sie MPD (stoppen Sie es zuerst, wenn es ausgeführt wird):

sudo /etc/init.d/mpd start

Warten Sie ein wenig, es dauert mindestens 10-15 Sekunden auf meinem RasPI, bis der Daemon ordnungsgemäß funktionieren kann.

Aktualisieren Sie Ihre Musikbibliothek (und warten Sie, bis sie fertig ist):

sudo apt-get install mpc
mpc update

Aktivieren Sie die Ausgänge nach Belieben (im Folgenden werden die konfigurierten MPD-Ausgänge aufgelistet und der erste aktiviert):

mpc outputs
mpc enable 1

Verwenden Sie jetzt Ihren bevorzugten MPD-Client, um Musik abzuspielen. Ich benutze ncmpcppauf der Kommandozeile und MPDroid auf meinem Handy / Tablet.

Fehlerbehebung

Starten Sie mpd in Verbose, pulseaudio mit maximaler Protokollierungsstufe und überwachen Sie die Protokolle:

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

Versuchen Sie zuerst, pulseaudio zum Laufen zu bringen. Laden Sie einfach pulseaudio, laden Sie das RAOP-Erkennungsmodul, listen Sie die Senken auf, richten Sie die Standardsenke ein und versuchen Sie, etwas zu spielen:

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

Sobald Sie pulseaudio zum Laufen gebracht haben, versuchen Sie, MPD zum Laufen zu bringen.

Benoit Duffez
quelle
1
Genau das habe ich gesucht! Ich habe einen Mopidy, der auf einem Himbeer-Pi läuft. Ich werde dies versuchen und aktualisieren, um Ihnen mitzuteilen, ob es funktioniert hat!
Leolobato
2

Scheint, dass pulseaudio-module-raop das ist, wonach Sie suchen. Dieses Handbuch enthält eine detaillierte Beschreibung, wie Sie dies in Ubuntu einrichten.

Lukas Vermeer
quelle
1
Im Allgemeinen ist eine ausführliche Erklärung besser als ein Link. Links können sich verlagern oder sterben. Noch wichtiger ist, dass es eine gute Idee ist, etwas über pulseaudio-module-raop zu erklären.
ramblinjan
2

Verbrachte einige Zeit mit dem Versuch, Airplay über Raop / PulseAudio auf dem neuen Raspberry Pi 3 mit Raspbian Jessie zu konfigurieren, mit sehr geringem Erfolg. Ich würde Forked-Daapd wärmstens empfehlen :

Dies ist eine stark aktualisierte Version des originalen Forked-Daapd 0.19, eines Linux / FreeBSD-DAAP-Medienservers (iTunes) mit Unterstützung für AirPlay-Geräte, Apple Remote (und kompatible Geräte), MPD, Spotify, MP3-Streaming und Internetradio.

Die Installation war sehr unkompliziert und ich hatte das Ganze in ca. 10 Minuten am Laufen. Hier sind die Installationsanweisungen wie hier beschrieben :

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
quelle