Перенаправлення аудіо на інший пристрій AirPlay


20

Я налаштовую Mopidy на Raspbian, щоб я міг використовувати Raspberry Pi в якості автомата для Spotify (та локальних файлів). Я знаю, що аналоговий аудіо вихід Raspberry Pi не великий.

Чи є спосіб перенаправити все аудіо з Raspberry Pi на пристрій AirPlay (наприклад, Airport Express)?

Було б чудово, якби я також міг робити все з командного рядка, тому я міг налаштувати кілька сценаріїв для переключення різних пристроїв.


Це чудове питання. Я люблю повітряні ігри, і це просто має сенс використовувати його на Пі. Буду копатись навколо себе на одному, але гарному питанні! +1
Пьотр Кула

З того, що я зрозумів, це можна зробити за допомогою PulseAudio. Я теж копаюся.
leolobato

подивимося на те , що ми обговорюємо тут raspberrypi.org/phpBB3 / ...
jmp909

Я знаю, що це трохи поза темою - але якщо ви не хочете після віддаленого playbac, що з приємним USB DAC?
петр

Відповіді:


13

Ви можете використовувати mpd, pulseaudio та модуль raop2, якщо потрібно:

  • mpd для керування списками відтворення, бібліотекою тощо ( sudo apt-get install mpd)
  • pulseaudio для управління аудіовиходами: рейп для AirPlay або будь-якого іншого пристрою виводу, такого як аналоговий роз'єм, HDMI, послуга потокового потоку http тощо sudo apt-get install pulseaudio)
  • raop2 модуль для pulseaudio, якщо оригінальний модуль raop, вбудований у pulseaudio, не працює

Мені довелося побудувати pulseaudio з джерела, щоб отримати оновлену версію модуля RAOP для pulseaudio.


Ось що я зробив, щоб він працював (він може скаржитися на відсутні пакети, лише на sudo apt-get installних):

Встановіть MPD

sudo apt-get install mpd

Встановіть PulseAudio

Вибір A: у вас старий пристрій AirPlay або вам не потрібна потокова передача UDP.

Це простіше, але менш сумісно.

sudo apt-get install pulseaudio

Вибір B: ви хочете покращити сумісність та підтримку як протоколу TCP, так і UDP

Тоді вам потрібен модуль raop2 для pulseaudio, що означає побудову ПА з джерела.

Встановіть git, якщо ви ще цього не зробили, і складіть pulseaudio (див. Офіційні інструкції ):

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

Під час налаштування мені довелося вручну зафіксувати посилання 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

або, на ваш вибір:

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

Налаштуйте все

Початкові налаштування MPD

Тепер нам потрібно встановити MPD:

sudo vi /etc/mpd.conf

У цьому файлі встановіть наступне:

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"

Нам потрібно буде відредагувати вихід, але спочатку нам потрібно ім'я імпульсного імпульсу.

PulseAudio миє

Avahi / zeroconf приємно мати, тому що це дозволить виявити пристрої AirPlay (через zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

Тепер ми можемо запустити pulseaudio і спробувати завантажити модулі RAOP:

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

Ось результат моєї настройки:

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>

Потім потрібно /etc/mpd.confзнову відредагувати та додати наступні результати:

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

Додайте один із цих блоків для кожного пристрою AirPlay, на який ви хочете передавати музику.

Конфігурація PulseAudio

Остання частина - налаштування ПА:

sudo vi /etc/pulse/client.conf

Зауважте autospawn = yes, що це зробить імпульсний аудіозапуск автоматично, коли це потрібно.

sudo vi /etc/pulse/default.pa

Додайте наступний рядок внизу:

load-module module-raop-discover

Це дозволить імпульсно завантажувати модуль виявлення RAOP при його запуску.

Заключний крок

Це має працювати зараз. Запустіть MPD (зупиніть його спочатку, якщо він працює):

sudo /etc/init.d/mpd start

Почекайте трохи, на моєму RasPI потрібно не менше 10-15 секунд, перш ніж демон зможе нормально працювати.

Оновіть свою музичну бібліотеку (і дочекайтеся її завершення):

sudo apt-get install mpc
mpc update

Увімкніть виходи за власним бажанням (далі буде перелічено налаштовані виходи MPD та включить перший):

mpc outputs
mpc enable 1

Тепер використовуйте улюблений клієнт MPD, щоб відтворити музику. Я використовую ncmpcppв командному рядку та MPDroid на своєму телефоні / планшеті.

Вирішення проблем

Запустіть mpd у дослідній формі, pulseaudio з максимальним рівнем реєстрації та журналах моніторів:

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

Спробуйте спочатку змусити імпульсний звук. Просто завантажте pulseaudio, завантажте модуль виявлення RAOP, перерахуйте раковини, встановіть мийку за замовчуванням і спробуйте щось відтворити:

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

Після того, як у вас буде працювати pulseaudio, спробуйте змусити MPD працювати з ним.


1
Це саме те, що я шукав! У мене є примхливий біг на Raspberry Pi. Спробуй це та оновимо, щоб сказати, чи спрацювало це!
leolobato

2

Здається, що pulseaudio-module-raop - це те, що ви шукаєте. У цьому посібнику є детальний опис того, як налаштувати це в Ubuntu.


1
Взагалі кажучи, відповідь, яка дає детальне пояснення, краще, ніж посилання. Посилання можуть переміщуватися або загинути. Що ще важливіше, пояснення трохи про pulseaudio-module-raop може бути гарною ідеєю ..
ramblinjan

2

Витратили деякий час, намагаючись налаштувати Airplay через Raop / PulseAudio на новій Raspberry Pi 3, використовуючи Raspbian Jessie з дуже невеликим успіхом. Я настійно рекомендую forked-daapd :

Це значно оновлена ​​версія оригінальної forked-daapd 0.19, медіа-сервера Linux / FreeBSD DAAP (iTunes) з підтримкою пристроїв AirPlay, Apple Remote (та сумісних даних), MPD, Spotify, потокового передавання mp3 та інтернет-радіо.

Установка була дуже простою, і я працював над цією роботою приблизно за 10 хвилин. Ось інструкції з установки, як це детально описано тут :

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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.