#ChiroruLab

趣味と日々の雑記録

【Buster対応】Raspberry PiでShairport Syncを使ってAirPlayレシーバーを作る

f:id:chiroru_27:20210130214532p:plain f:id:chiroru_27:20210130214537p:plain

以前にまとめた方法が古くなってきたので、最新のラズパイ(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 スピーカーに信号を送るためのサウンドシステム

動作のイメージ

iOSMacOSの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



理解してやるって大事

安定動作するようになって嬉しい。以上、@chiroru_27 でした。