Przekieruj dźwięk do innego urządzenia AirPlay

20

Konfiguruję Mopidy na Raspbian, aby móc używać Raspberry Pi jako szafy grającej Spotify (i plików lokalnych). Wiem, że analogowe wyjście audio Raspberry Pi nie jest świetne.

Czy istnieje sposób przekierowania całego dźwięku z Raspberry Pi na urządzenie AirPlay (na przykład Airport Express)?

Byłoby wspaniale, gdybym mógł zrobić wszystko z wiersza poleceń, więc mogłem skonfigurować kilka skryptów do przełączania różnych urządzeń.

leolobato
źródło
To świetne pytanie. Uwielbiam airplay i to ma sens, aby używać go na Pi. Wykopię wokół siebie to dobre, ale dobre pytanie! +1
Piotr Kula,
Z tego, co zrozumiałem, można to zrobić za pomocą PulseAudio. Ja też szukam.
leolobato,
spójrz na to, o czym tutaj
mówimy
Wiem, że to trochę nie na temat - ale jeśli nie zależy ci na zdalnym playbac, co powiesz na fajny przetwornik USB?
petr

Odpowiedzi:

13

W razie potrzeby możesz użyć modułu mpd, pulseaudio i raop2:

  • mpd do zarządzania listami odtwarzania, biblioteką itp. ( sudo apt-get install mpd)
  • pulseaudio do zarządzania wyjściami audio: raop dla AirPlay lub dowolnego innego urządzenia wyjściowego, takiego jak gniazdo analogowe, HDMI, usługa przesyłania strumieniowego HTTP itp. ( sudo apt-get install pulseaudio)
  • moduł raop2 dla pulseaudio, jeśli oryginalny moduł raop wbudowany w pulseaudio nie działa

Musiałem zbudować pulseaudio ze źródła, aby uzyskać zaktualizowaną wersję modułu RAOP dla pulseaudio.


Oto, co zrobiłem, aby działało (może narzekać na brakujące pakiety, tylko sudo apt-get installje):

Zainstaluj MPD

sudo apt-get install mpd

Zainstaluj PulseAudio

Wybór A: masz stare urządzenie AirPlay lub nie potrzebujesz przesyłania strumieniowego UDP.

To jest łatwiejsze, ale mniej kompatybilne.

sudo apt-get install pulseaudio

Wybór B: chcesz lepszej kompatybilności i obsługi zarówno przesyłania strumieniowego TCP, jak i UDP

Następnie potrzebujesz modułu raop2 dla pulseaudio, co oznacza budowanie PA ze źródła.

Zainstaluj git, jeśli jeszcze tego nie zrobiłeś i zbuduj pulseaudio (zobacz oficjalne instrukcje ):

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

Przy mojej instalacji musiałem ręcznie dowiązać libpulse.so.0 ręcznie:

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

lub, zgodnie z twoimi preferencjami:

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

Skonfiguruj wszystko

Wstępna konfiguracja MPD

Teraz musimy skonfigurować MPD:

sudo vi /etc/mpd.conf

W tym pliku ustaw następujące opcje:

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"

Będziemy musieli edytować dane wyjściowe, ale najpierw potrzebujemy nazwy zlewu pulseaudio.

PulseAudio tonie

Avahi / zeroconf jest fajny, ponieważ umożliwia wykrywanie urządzeń AirPlay (przez zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Teraz możemy uruchomić pulseaudio i spróbować załadować moduły RAOP:

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

Oto wynik mojej konfiguracji:

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>

Następnie musisz /etc/mpd.confponownie edytować i dodać następujące dane wyjściowe:

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

Dodaj jeden z tych bloków dla każdego urządzenia AirPlay, do którego chcesz przesyłać strumieniowo muzykę.

Konfiguracja PulseAudio

Ostatnią częścią jest ustawienie PA:

sudo vi /etc/pulse/client.conf

Odkomentuj autospawn = yes, uczyni to PulseAudio rozpocznie się automatycznie, gdy jest to potrzebne.

sudo vi /etc/pulse/default.pa

Dodaj następujący wiersz na dole:

load-module module-raop-discover

Spowoduje to, że pulseaudio załaduje moduł wykrywania RAOP po uruchomieniu.

Ostatni krok

Powinno już działać. Uruchom MPD (zatrzymaj go najpierw, jeśli jest uruchomiony):

sudo /etc/init.d/mpd start

Poczekaj chwilę, zanim mój demon będzie mógł działać poprawnie, zajmuje co najmniej 10-15 sekund na moim RasPI.

Zaktualizuj swoją bibliotekę muzyczną (i poczekaj na jej zakończenie):

sudo apt-get install mpc
mpc update

Włącz wyjścia do woli (poniżej wyświetli się lista skonfigurowanych wyjść MPD i włącz pierwsze):

mpc outputs
mpc enable 1

Teraz użyj swojego ulubionego klienta MPD, aby odtwarzać muzykę. Korzystam ncmpcppz wiersza polecenia, a MPDroid na moim telefonie / tablecie.

Rozwiązywanie problemów

Uruchom mpd w trybie pełnym, pulseaudio z maksymalnym poziomem rejestrowania i monitoruj dzienniki:

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

Najpierw spróbuj uruchomić pulseaudio. Wystarczy załadować pulseaudio, załadować moduł wykrywania RAOP, wyświetlić listę zlewów, skonfigurować domyślny zlew i spróbować coś odtworzyć:

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

Gdy już uruchomisz pulseaudio, spróbuj zmusić MPD do pracy z nim.

Benoit Duffez
źródło
1
Właśnie tego szukałem! Mam mopidię działającą na Raspberry Pi. Spróbuję tego i zaktualizuję, aby powiedzieć, czy zadziałało!
leolobato,
2

Wydaje się, że pulseaudio-module-raop jest tym, czego szukasz. Ten przewodnik zawiera szczegółowy opis konfiguracji tego systemu w Ubuntu.

Lukas Vermeer
źródło
1
Ogólnie rzecz biorąc, odpowiedź zawierająca szczegółowe wyjaśnienie jest lepsza niż link. Linki mogą zostać przeniesione lub umrzeć. Co ważniejsze, wyjaśnienie trochę na temat pulseaudio-module-raop może być dobrym pomysłem ..
ramblinjan 23.10.13
2

Spędziłem trochę czasu próbując skonfigurować Airplay przez Raop / PulseAudio na nowym Raspberry Pi 3 przy użyciu Raspbian Jessie z bardzo małym powodzeniem. Gorąco polecam forked-daapd :

Jest to znacznie zaktualizowana wersja oryginalnego forked-daapd 0.19, serwera mediów Linux / FreeBSD DAAP (iTunes) z obsługą urządzeń AirPlay, Apple Remote (i kompatybilnych), MPD, Spotify, strumieniowego przesyłania mp3 i radia internetowego.

Instalacja była bardzo prosta, a wszystko uruchomiłem w około 10 minut. Oto instrukcje instalacji, jak wyszczególniono tutaj :

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
źródło