Raspberry PiによるAirPlayレシーバーの構築方法(RPiPlay使用)

Raspberry PiをAirPlayレシーバーとして機能させ、iPhoneやiPadなどのAppleデバイスから画面や音声をミラーリングする方法を解説します。ここでは、オープンソースのAirPlayレシーバーソフトウェア「RPiPlay」を使用します。

1. Raspberry Piのシステム更新

まず、Raspberry Piのパッケージリストとシステムを最新の状態に更新します。

パッケージリストの更新

sudo apt update

インストール済みパッケージのアップグレード

sudo apt upgrade

OSのファームウェア更新(オプション)

より新しいファームウェアに更新したい場合は、rpi-update を使用します。これは開発版のファームウェアをインストールするため、安定性を重視する場合はスキップしても問題ありません。

sudo apt install rpi-update
sudo rpi-update
sudo reboot # 更新後、再起動

2. RPiPlayのセットアップ

RPiPlayのソースコードをダウンロードし、ビルドします。

必要なパッケージのインストール

RPiPlayのビルドに必要な依存関係をインストールします。

sudo apt install cmake
sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libssl-dev
sudo apt install libplist-dev

補足: 環境によっては libplist-dev が不要な場合もありますが、エラーが出る場合はインストールしてください。

動作確認環境

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

RPiPlayのダウンロードとビルド

GitHubからRPiPlayのソースコードをクローンし、ビルドします。

git clone https://github.com/FD-/RPiPlay.git
cd RPiPlay
mkdir build
cd build
cmake ..
make

make コマンドが完了すると、build ディレクトリ内に rpiplay という実行ファイルが生成されます。

RPiPlayの起動

生成された rpiplay 実行ファイルを直接起動できます。

./rpiplay

起動時に以下のオプションを引数として渡すことで、詳細な設定を行うことができます。

-n <name>: AirPlayサーバーのネットワーク名を指定します。
-b (on|auto|off): 黒い背景の表示設定 (常に表示、接続時のみ、表示しない)。
-r (90|180|270): 画像の回転角度を90度単位で指定します。
-f (horiz|vert|both): 画像の反転設定 (水平、垂直、両方)。
-l: 低遅延モードを有効にします。音声と映像の同期がずれる可能性があります。
-a (hdmi|analog|off): 音声出力デバイスを設定します。
-vr <renderer>: 使用するビデオレンダラーを選択します (rpi, gstreamer, dummy)。
-ar <renderer>: 使用するオーディオレンダラーを選択します (rpi, gstreamer, dummy)。
-d: デバッグログを有効にします。コンソール出力が多いため、再生が途切れる可能性があります。
-v/-h: ヘルプとバージョン情報を表示します。

3. Raspberry Pi起動時にRPiPlayを自動実行する

Raspberry Piの起動時にRPiPlayが自動的に起動するように、systemd サービスとして設定します。

サービスファイルの作成

/etc/systemd/system/ ディレクトリに rpiplay.service という名前でサービスファイルを作成します。

sudo nano /etc/systemd/system/rpiplay.service

以下の内容をファイルに記述します。ExecStart のパスは、RPiPlayをクローンしたディレクトリに合わせて変更してください。User=pi は、pi ユーザーで実行する場合です。

[Unit]
Description=RPi Play Service
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=10
User=pi # RPiPlayを実行するユーザー
ExecStart=/home/pi/RPiPlay/build/rpiplay -n MyPiAirPlay -b auto -a hdmi # 実行ファイルのパスとオプション
StandardOutput=inherit
StandardError=journal

[Install]
WantedBy=multi-user.target

ExecStart-n オプションでAirPlayデバイスとして表示される名前を設定できます。

サービスを有効化して起動

サービスファイルを作成したら、systemd にサービスを認識させ、有効化して起動します。

sudo systemctl daemon-reload # systemdの設定をリロード
sudo systemctl enable rpiplay.service # 起動時に自動実行されるように有効化
sudo systemctl start rpiplay.service # サービスを今すぐ起動

サービスのステータスを確認するには、以下のコマンドを使用します。

sudo systemctl status rpiplay.service

これで、Raspberry PiがAirPlayレシーバーとして機能するようになります。iPhoneやiPadからAirPlayのデバイスリストに「MyPiAirPlay」(または -n オプションで指定した名前)が表示されるはずです。

参考