Linux用のオープンソースソフトウェア「UxPlay」を用いてiPhoneの画面をUbuntu PCの画面上にリアルタイム表示する方法をメモしておく。
Windows PCの場合、iPhoneの画面をまともに表示しようとすると有償ソフトが必要になるのでプライベート用途ではなかなかやろうと思わないけど、Linuxの場合はこの「UxPlay」を使えばお金をかけずにできてしまうからやっぱりLinuxすごい。
確認した動作環境
- PC
- PC:Dell Alienware 13 R3
- OS:Ubuntu 20.04
- iPhone
- OS:iOS 14.4
- ネットワーク
- PCはUbuntuの公式aptリポジトリに接続可。
- PCとiPhoneは同じネットワークセグメントに存在する。(同じWi-Fiアクセスポイントに接続している)
手順
以下の手順はすべてPC側で行う。
必要なソフトウェアをインストールする
端末(ターミナル)で次のコマンドを実行する。(コピペ推奨)
sudo apt update
sudo apt install -y cmake libssl-dev libavahi-compat-libdnssd-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
UxPlayのソースコードを取得する
UxPlayのGitHubのページからソースコードをダウンロードする。
ページを開いたら、下の画像のように「Code」ボタン→「Download ZIP」ボタンを順番にクリックすると、Zip圧縮されたソースコードがまとめてダウンロードできる。ダウンロード先・展開先はどこでもよいが、筆者はダウンロードしたものを/home/<ユーザ名>/dev/github/UxPlay-master
以下に展開した。(Gitを使える人はGitで取得してももちろんOK)
グラフィック用の設定をする
グラフィック描画をIntel CPUで行っている場合
追加で次のコマンドでソフトウェアをインストールする。
sudo apt install -y gstreamer1.0-vaapi
NVIDIAグラフィックボードを搭載している場合
PCがNVIDIA製のグラフィックボードを搭載している場合はソースコードの一部修正が必要。
<ソースコード展開先ディレクトリ>/renderers/video_renderer_gstreamer.c
に対して次の修正をする。
2021/2/23現在、このファイルの66行目に「autovideosink」という記述がある(下図の赤線のところ)ので、これを「glimagesink」に書き換える。
ソースコードをビルドする
次のコマンドを順番に実行する。
cd <ソースコード展開先のディレクトリパス> # 例:cd /home/<ユーザ名>/dev/github/UxPlay-master
mkdir build
cd build
cmake ..
make
UxPlayを使う
PCで次のコマンドを実行する。
cd <ソースコード展開先のディレクトリパス>/build # 末尾に「/build」が付くので注意
./uxplay
iPhoneのコントロールセンターを開き、「画面ミラーリング」をタップする。
画面のミラーリング先デバイスの一覧に「UxPlay」が表示されたら、それをタップする。
PCの画面上に新たにウィンドウが表示され、iPhoneの画面のリアルタイム表示が始まる。
画面ミラーリングを終了する
iPhone側は画面ミラーリングを停止すればよいだけだが、PC側はウィンドウの×ボタンをクリックしても終わってくれない。
PC側は、先ほどUxPlayを起動したときに使った端末(ターミナル)でキーボードでCtrl+Cを押すと2,3秒後くらいに終了してくれる。
参考サイト
GitHub – UxPlay https://github.com/antimof/UxPlay
How to watch the stream? #2 https://github.com/antimof/UxPlay/issues/2
Install GStreamer on Ubuntu or Debian https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c#install-gstreamer-on-ubuntu-or-debian