Перенаправить звук на другое устройство AirPlay


20

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

Есть ли способ перенаправить все аудио с Raspberry Pi на устройство AirPlay (например, Airport Express)?

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


Это отличный вопрос. Я люблю трансляцию, и это просто имеет смысл использовать его на Pi. Буду копаться в этом себе, но хороший вопрос! +1
Петр Кула

Из того, что я понял, это можно сделать с помощью PulseAudio. Я тоже копаюсь.
leolobato

посмотрите на то, что мы обсуждаем здесь raspberrypi.org/phpBB3/…
jmp909

Я знаю, что это немного не по теме - но если вы не после удаленного воспроизведения, как насчет хорошего USB DAC?
Петр

Ответы:


13

При необходимости вы можете использовать модуль mpd, pulseaudio и raop2:

  • mpd для управления плейлистами, библиотекой и т. д. ( sudo apt-get install mpd)
  • pulseaudio для управления аудиовыходами: raop для 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, что означает создание PA из источника.

Установите 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.

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

Последняя часть заключается в настройке PA:

sudo vi /etc/pulse/client.conf

Раскомментируйте autospawn = yes, это заставит pulseaudio запускаться автоматически, когда это необходимо.

sudo vi /etc/pulse/default.pa

Добавьте следующую строку внизу:

load-module module-raop-discover

Это заставит pulseaudio загрузить модуль обнаружения 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. Просто загрузите pulseaudio, загрузите модуль обнаружения RAOP, перечислите приемники, настройте приемник по умолчанию и попробуйте что-нибудь воспроизвести:

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

После того, как вы установили PulseAdio, попробуйте заставить MPD работать с ним.


1
Это именно то, что я искал! У меня есть мопидия на Raspberry Pi. Попробую это и обновлю, чтобы сказать, сработало ли это!
Леолобато

2

Похоже, что pulseaudio-module-raop - это то, что вы ищете. В этом руководстве есть подробное описание того, как настроить это в Ubuntu.


1
Вообще говоря, ответ с подробным объяснением лучше, чем ссылка. Ссылки могут переместиться или умереть. Что еще более важно, объяснение немного о pulseaudio-module-raop может быть хорошей идеей ..
ramblinjan

2

Потратил некоторое время, пытаясь настроить Airplay через Raop / PulseAudio на новом Raspberry Pi 3, используя Raspbian Jessie с очень небольшим успехом. Я очень рекомендую разветвленный 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.