Alihkan audio ke perangkat AirPlay lain

20

Saya menyiapkan Mopidy pada Raspbian sehingga saya dapat menggunakan Raspberry Pi sebagai Spotify (dan file lokal) jukebox. Saya tahu output audio analog dari Raspberry Pi tidak bagus.

Apakah ada cara untuk mengalihkan semua audio dari Raspberry Pi ke perangkat AirPlay (misalnya Airport Express)?

Akan lebih bagus jika saya juga bisa melakukan semuanya dari baris perintah, jadi saya bisa mengatur beberapa skrip untuk beralih perangkat yang berbeda.

leolobato
sumber
Itu pertanyaan yang bagus. Saya suka diputar dan itu masuk akal untuk menggunakannya pada Pi. Akan menggali sekitar diriku pada pertanyaan yang bagus tapi bagus! +1
Piotr Kula
Dari apa yang saya mengerti, itu bisa dilakukan menggunakan PulseAudio. Saya menggali sekitar juga.
leolobato
lihat apa yang kita diskusikan di sini raspberrypi.org/phpBB3/…
jmp909
Saya tahu ini sedikit di luar topik - tetapi jika Anda tidak mengejar playbac jarak jauh, bagaimana dengan DAC USB yang bagus?
petr

Jawaban:

13

Anda dapat menggunakan modul mpd, pulseaudio dan raop2, jika perlu:

  • mpd untuk mengelola daftar putar, perpustakaan, dll ( sudo apt-get install mpd)
  • pulseaudio untuk mengelola output audio: raop untuk AirPlay, atau perangkat output lain seperti jack analog, HDMI, layanan streaming http, dll ( sudo apt-get install pulseaudio)
  • modul raop2 untuk pulseaudio jika modul raop asli yang dibangun ke pulseaudio tidak berfungsi

Saya harus membuat pulseaudio dari sumber untuk mendapatkan versi terbaru dari modul RAOP untuk pulseaudio.


Inilah yang saya lakukan untuk membuatnya bekerja (mungkin mengeluh tentang paket yang hilang, hanya sudo apt-get installmereka):

Instal MPD

sudo apt-get install mpd

Instal PulseAudio

Pilihan A: Anda memiliki perangkat AirPlay lama, atau Anda tidak perlu streaming UDP.

Lebih mudah tetapi kurang kompatibel.

sudo apt-get install pulseaudio

Pilihan B: Anda menginginkan kompatibilitas yang lebih baik, dan dukungan untuk streaming TCP dan UDP

Maka Anda memerlukan modul raop2 untuk pulseaudio, yang berarti membangun PA dari sumber.

Instal git jika Anda belum melakukannya, dan buat pulseaudio (lihat instruksi resmi ):

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

Pada pengaturan saya, saya harus symlink libpulse.so.0 secara manual:

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

atau, sesuai keinginan Anda:

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

Konfigurasikan semuanya

Pengaturan awal MPD

Sekarang kita perlu mengatur MPD:

sudo vi /etc/mpd.conf

Dalam file itu, tetapkan yang berikut ini:

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"

Kita perlu mengedit output, tetapi kita perlu nama wastafel pulseaudio terlebih dahulu.

PulseAudio tenggelam

Avahi / zeroconf bagus untuk dimiliki karena akan memungkinkan penemuan perangkat AirPlay (melalui zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Sekarang kita dapat memulai pulseaudio dan mencoba memuat modul RAOP:

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

Inilah output pada pengaturan saya:

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>

Anda perlu mengedit /etc/mpd.conflagi dan menambahkan output berikut:

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

Tambahkan salah satu dari blok ini untuk setiap perangkat AirPlay yang ingin Anda alirkan musik.

Konfigurasi PulseAudio

Bagian terakhir adalah mengatur PA:

sudo vi /etc/pulse/client.conf

Uncomment autospawn = yes, ini akan membuat pulseaudio memulai secara otomatis ketika dibutuhkan.

sudo vi /etc/pulse/default.pa

Tambahkan baris berikut di bagian bawah:

load-module module-raop-discover

Ini akan membuat pulseaudio memuat modul RAOP find ketika dimulai.

Langkah terakhir

Seharusnya berfungsi sekarang. Mulai MPD (hentikan dulu jika sedang berjalan):

sudo /etc/init.d/mpd start

Tunggu sebentar, dibutuhkan setidaknya 10-15 detik pada RasPI saya sebelum daemon dapat bekerja dengan baik.

Perbarui perpustakaan musik Anda (dan tunggu sampai selesai):

sudo apt-get install mpc
mpc update

Aktifkan output sesuka hati (berikut ini akan mencantumkan output MPD yang dikonfigurasi dan mengaktifkan yang pertama):

mpc outputs
mpc enable 1

Sekarang gunakan klien GKG favorit Anda untuk memutar musik. Saya menggunakan ncmpcpppada command-line, dan MPDroid di ponsel / tablet saya.

Penyelesaian masalah

Mulai mpd dalam verbose, pulseaudio dengan level logging maksimum, dan monitor log:

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

Cobalah untuk membuat pulseaudio bekerja lebih dulu. Cukup muat pulseaudio, muat modul RAOP find, daftarkan sink, atur wastafel default dan coba mainkan sesuatu:

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

Setelah pulseaudio berfungsi, coba dan buat MPD bekerja dengannya.

Benoit Duffez
sumber
1
Itulah tepatnya yang saya cari! Saya memiliki mopidy yang berjalan di Raspberry Pi. Akan mencoba ini dan memperbarui untuk memberi tahu Anda jika itu berhasil!
leolobato
2

Tampaknya pulseaudio-module-raop adalah yang Anda cari. Panduan ini memiliki deskripsi terperinci tentang cara mengatur ini di Ubuntu.

Lukas Vermeer
sumber
1
Secara umum, jawaban yang memberikan penjelasan terperinci lebih baik daripada tautan. Tautan dapat pindah atau mati. Lebih penting lagi, menjelaskan sedikit tentang pulseaudio-module-raop mungkin ide yang bagus ..
ramblinjan
2

Menghabiskan waktu mencoba mengkonfigurasi Airplay melalui Raop / PulseAudio pada Raspberry Pi 3 baru menggunakan Raspbian Jessie dengan sedikit keberhasilan. Saya akan sangat merekomendasikan forked-daapd :

Ini adalah versi yang jauh diperbarui dari forked-daapd 0.19 asli, server media Linux / FreeBSD DAAP (iTunes) dengan dukungan untuk perangkat AirPlay, Apple Remote (dan yang kompatibel), MPD, Spotify, streaming mp3 dan radio internet.

Instal sangat mudah dan saya memiliki semuanya dan berjalan dalam waktu sekitar 10 menit. Berikut adalah petunjuk pemasangan yang dirinci di sini :

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
sumber