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

20

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

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

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

leolobato
источник
Это отличный вопрос. Я люблю трансляцию, и это просто имеет смысл использовать его на 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.
Nate
источник