Shairport-syncを使って、MacをAirPlayレシーバーにする

Shairport-syncというオープンソースのソフトウェアを使うと、MacをAirPlayのレシーバーに出来るとのことで試した&躓いた&克服した記録

何がしたいのか

画像1

上記画像は適当に作った部屋の概念図(みたいなもの)。

Mac①:現在メインで使用しているMacBook。普段はThunderbolt Displayに繋がってる
Soundsticks:Harman Kardon製のスピーカー
Mac②:Mac①への買い替え前に使用していたMacBook
DAC:ifi Audio製のやつ
Amp:Fostex製のやつ
JBL(R)(L):スピーカー。JBLのMODEL 4311B

普段、自分はMac①で主な作業をしている。JBLのスピーカーの方が音がいいのもあって、普段はそちらから音楽を流している。なぜMac②を使っているかというと、MQAファイルを再生できる環境を構築するため。自分が持っているifi Audio製のDACはMQAレンダラーなので、コアデコーダーとしてのマシンが必要だった。それと、Mac同士であればmacOS標準の画面共有機能で遠隔操作できるため、音楽選択操作をMac①からできるため。

画像2

とはいえ、動画コンテンツを見るときには、Thunderbolt Displayが自分の持つディスプレイの中で一番大きいので、Mac①側で映像を流し、それに直繋ぎしているHarman KardonのSoundsticksで音を再生していた。
※太矢印が映像で細矢印が音声。

ふと「Mac①から音声だけMac②に転送したら、自分の持ちうる設備の中で一番ベストな視聴スタイルになるのでは」と気づいたため、その環境を構築しよう。というのが本記事の趣旨。
↓の状態を実現したい。

画像3

Shairport-syncというオープンソースのソフトウェアを使うと、MacをAirPlayのレシーバーに出来るので、Mac→Macで音声を飛ばせるかもということがわかった。

必要なもの:
- Command LIne Tools
https://developer.apple.com/download/more/ お持ちのApple IDでDeveloper登録して、お使いのmacOSのバージョンに即したものをインストールしてください
- Homebrew
なくてもいいけど、こっちの方が簡単なので

Homebrewをインストールする

Homebrewはコマンドを打つだけでソフトをインストールしたり、管理できたりする便利なソフトです。
https://brew.sh/ Homebrewのホームページにある「Install Homebrew」にあるコマンドをターミナルにコピペして実行。
成功!みたいな文字列が出たらインストール完了

Shairport-syncをインストールする

Shairport-syncをHomebrewを使ってインストールします。ターミナルに以下のコマンドを打つ。

brew install shairport-sync

少し時間がかかりますが、エラー等起きずにSuccessful的なテキストが表示されたらインストール完了です。

Shairport-syncを起動する

Shairport-syncを起動するためにターミナルで以下コマンドを実行します

shairport-sync

ここで自分は躓いた。

W: [] caps.c: Normally all extra capabilities would be dropped now, but that's impossible because PulseAudio was built without capabilities support.

と返された。何かが足りないらしい。/usr/local/Cellar/shairport-sync/のREADMEを読んでいると

Shairport Sync works well with PulseAudio.

という記述を発見。PulseAudioはサウンドサーバーと呼ばれる、いろんな音源(アプリケーション)のサウンドをミックスしたり、デバイスにも音を接続したりとかをするソフトらしい。PulseAudioもHomebrewを使ってインストールできるため以下のコマンドでインストールできる。

brew install pulseaudio

そして、以下のコマンドで起動する

brew services start pulseaudio

PulseAudioが起動したら、先ほどのコマンドでShairport-syncも起動する。すると、MacやiPhoneの音声出力の選択画面でAirPlayマークと共にMacが表示されて、再生もできた。

調子が悪い時は

このPulseAudioとShairport-syncの組み合わせはまだ不安定なのか、たまに機能しなくなる時があった。そういう時は以下のコマンドで一度Shairport-syncを終了する

shairport-sync -k

その次に、以下のコマンドでPulseAudioを再起動する

brew services restart pulseaudio

最後に以下コマンドでShairport-syncを起動する

shairport-sync

ただ、deamonで起動していた方が便利なので、daemonモードで起動する以下コマンドをしようした方がいいかも

shairport-sync -d

使ってみて

正直まだまだ遅延があるので、映像と音声を別のデバイスに飛ばして再生するというのは現実的ではなかった。とはいえ、AirPlayレシーバーとしての機能は十分だったので、友達が遊びに来た時に、Macを操作せずとも友達のiPhoneからすぐに音楽を流すことができる。という環境が手に入った。

※普段コマンドラインは使わないタイプなので、間違えてる情報もあるかもです。上記説明でうまくいかなった場合は共に解決しましょう。お声がけお待ちしています。

この記事が気に入ったらサポートをしてみませんか?