Shairport Sync
Shairport Sync は AirPlay オーディオプレイヤーです。iTunes, iOS デバイス, ForkedDaapd などのサードパーティの AirPlay 音源からストリーミングされた音声を再生します。Shairport Sync のデバイスによって再生される音声は音源と同期し続けるので、同一の音源を再生する同じようなデバイスとも同期することになります。これによって、同期するマルチルームオーディオを簡単に構築できてしまいます (故に Shairport Sync という名前が付けられています)。
Shairport Sync は AirPlay の動画や写真のストリーミングには対応していません。
Shairport Sync は AirPort Express で使われている Apple の鍵を元にリバースエンジニアリングして作られた Shairport のフォークです。今後 Apple の出方によっては機能が削除される可能性があるので注意してください。
インストール
shairport-sync パッケージを インストール してください。
設定
設定ファイルは /etc/shairport-sync.conf
に存在します。設定ファイルにはコメントが付いており設定ヒントも記述されています。詳しいドキュメントは README ファイルから閲覧できます。
Audio バックエンド
Sharport Sync は PulseAudio とうまく連携しますが、タイミング情報は Alsa や sndio ほど正確ではありません。多くの場合、PulseAudio を削除または無効にするのは現実的ではありません。変わりに pa バックエンドを使用できます。[1]
バックエンドを変更したい場合は、たとえば alsa-utils のツールを使用して出力デバイスのリストを確認し、次のような生のオーディオ デバイスを確認します:
$ aplay -L
... sysdefault:CARD=PCH HDA Intel PCH, ALC269VC Analog Default Audio Device ...
次に、デバイス名を追加します:
/etc/shairport-sync.conf
// These are parameters for the "alsa" audio back end. // For this section to be operative, Shairport Sync must be built with the following configuration flag: // --with-alsa alsa = { output_device = "sysdefault"; }
システムサービス
起動
shairport-sync.service
を 起動/有効化 します。
デーモンのセットアップ
shairport-sync をデーモンとして実行したい場合は、/run
にフォルダーを作成する必要があります。これは Arch Linux のデフォルトでは tempfs です。起動時にフォルダーが自動的に作成されるようにするには、次のように tempfiles 設定ファイルを作成します:
/usr/lib/tempfiles.d/shairport-sync.conf
d /run/shairport-sync 0755 username group
shairport-sync -d
を使用して shairport-sync をデーモンとして実行し、shairport-sync -k
を使用してデーモンを停止できるようになります。
ユーザーサービス
著者 によると、デフォルトの PulseAudio 設定を持つ PulseAudio バックエンドは ユーザーサービス としてのみ動作します。2022-01-27 時点では、pulseaudio (pipewire-pulse) を変更せずにシステムサービスとして動作するようで、ユーザー サービスは必要ありません。
ユーザーデーモンとして shairport-sync を実行するには、それをデスクトップ環境の自動起動に追加するか、shairport-sync.service
を 有効化 して ユーザーユニット として追加できます。
次に、shairport-sync.service
を実行し、次の行を 編集 してコメントアウトします:
[Unit] ... #Requires=avahi-daemon.service #After=avahi-daemon.service ... [Service] ... #User=shairport-sync #Group=shairport-sync ...
これで、shairport-sync.service
を ユーザーとして 起動/有効化 する準備ができました:
ログを取得するには、ジャーナル を使用するか、ユニットのコントロール を確認してください。