【Buster対応】Raspberry PiでShairport Syncを使ってAirPlayレシーバーを作る
![]() |
![]() |
以前にまとめた方法が古くなってきたので、最新のラズパイ(Buster)で対応できるように再整理。
Linuxの仕組みも少しは理解できてきたので、備忘録としてここに残します。
参考にさせて頂いたサイト
GitHub - mikebrady/shairport-sync: AirPlay audio player. Shairport Sync adds multi-room capability with Audio Synchronisationラズパイ2でも途切れたくない><! AirPlay2 音楽ストリーミング (Shairport-sync)|Ethan|note
環境
- 2021-01-11-raspios-buster-armhf
- RaspberryPi Model 3B+
- SSDブート
- Raspberry Pi Imagerを使って作成→balenaetcherだと起動しない場合がある
前回までの環境作りの詳細はこちら
chiroru.hatenablog.com用語の整理
- Shairport Sync Linuxで動作するAirPlayサーバ
- PulseAudio バックグラウンドで動作し、音声入出力を行うサーバ。
- ALSA スピーカーに信号を送るためのサウンドシステム
動作のイメージ
iOSやMacOSのAirPayをShairport Syncで通信し、PulseAudioで処理されたデータがALSAを経由してスピーカーを鳴らす導入方法
必要なライブラリのインストール
$ sudo apt install git autoconf libdaemon-dev libpopt-dev libconfig-dev libasound2-dev libpulse-dev libavahi-client-dev libssl-dev libsoxr-dev
GitHub - mikebrady/shairport-sync: AirPlay audio player. Shairport Sync adds multi-room capability with Audio Synchronisation
各ライブラリの説明は公式HPに記載あり。
Shairport Syncのインストール
#ダウンロードし、作業フォルダに移動 $ git clone https://github.com/mikebrady/shairport-sync.git $ cd shairport-sync #展開しオプションを設定 $ autoreconf -i -f $ ./configure --sysconfdir=/etc --with-alsa --with-pa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd #インストール $ make && sudo make install
GitHub - mikebrady/shairport-sync: AirPlay audio player. Shairport Sync adds multi-room capability with Audio Synchronisation
各オプションの説明は公式HPに記載あり。
Shairport Syncのサーバー設定
各要素内に追加$ sudo nano /etc/shairport-sync.conf # 音質、出力、アンプ側音量に固定 general = { interpolation = "soxr"; output_backend = "alsa"; ignore_volume_control = "yes"; } # 割り込み接続 sessioncontrol = { allow_session_interruption = "yes"; } # 音質 alsa = { output_device = "plughw:1,0"; output_format = "S32_LE"; output_rate = 176400; period_size = 16384; buffer_size = 65536; }
アクセス権限の追加と自動起動
PulseAudioにアクセスできるようにユーザを追加$ sudo usermod -a -G pulse-access shairport-sync
自動起動を有効化
$ sudo systemctl enable shairport-sync.service $ sudo systemctl start shairport-sync.service