scrcpyでAndroidの画面をミラーリング

はじめに

AndroidでWindowsPCにミラーリングしようとすると、有料だったり、画質が悪かったり、地味にスペックを要求されてしまう(ある程度は仕方がないが。)アプリが多い。 ゲーム配信などには、画質や描画速度もほしいところ。

今まで試したもの↓

  • LetsView: 完全無料で設定も融通が効いて魅力MAXだが、私の環境ではいつのまにか数分でエラー落ちとなっている
  • ApowerMirror: 画質と軽さの面で申し分ないが、無料版では10分で配信が勝手に停止されるようになっている
  • Android画面録画究極: この中では最も安定していた。名前が胡散臭い…ユーザ登録で機能開放される部分が多く、毎回有料版を勧めてくる。
  • AirMore: 画質が満足いかなかった

ええ、、、ApowerS○ftだけで何個アプリ作るんだよ。。(´ 'д' ` )という実態。

今回、無料でミラーリングすることができるというscrcpyというパッケージを使ってミラーリングを試行した。 私以外にも記事は結構あるので成功の一例として捉えてもらえば。。

注意点としてAndroid端末は追加ソフトが不要だが、開発オプションのUSBデバッグモードをONにする必要あり。 あと筆者はなぜかWSL2上でscrcpyを実行しているが、普通にWindows用のscrcpy.exeをダウンロードして準備すればもっと簡単らしいゾ。


手順参考


スペックとか

種類 バージョン名など
Android端末 SO-01M (Xperia5)
Windows windows10 19041.928
Ubuntu 20.04 LTS

手順

1.インストール

wsl2が有効になったwindows上で手順を進めていく。

powershellで下記を実行してwsl2上でubuntuを起動。 wsl2の導入方法は申し訳ないが省かせていただく。

> wsl

既存パッケージ更新、scrcpyをインストール

$ apt update
$ apt install scrcpy

なお、既存パッケージ更新が済んでいない状態ではapt installがエラー落ちする状況となった。

有線でポートを開いたあと、無線でつなぐ際はWindows側でadbのTCP/IP接続準備が必要となる様子。 Windowsターミナルでadbコマンドが使えるようにSDK platform-toolsを任意の場所に配置してパスを通しておくこと。

Windows:

※なお、下記実行前にAndroid端末をUSB接続しておくこと

$adb tcpip 5555 
WSL2:
$adb connect [ip device]:5555 

※USBを外したあとに adb devicesに名前がでない場合は、一旦接続を停止して再度adb connectを実行

接続後に役立つコマンド

# 接続デバイス表示 
adb devices
# 停止させるとき 
adb kill-server 

2.ミラーリング・・・??

ひとまずscrcpyを実行するだけで良い。

scrcpy -m 1280 --max-fps 30

また、-mを指定しない場合はちょうどいい感じにしてくれる。

、、、と、うまくいけばいいのだが、できてないのではないだろうか。。 できた人は別件でWSL2でGUI環境が使えるように頑張っていたに違いない。。


3.ミラーリング時のエラー対応

$ No matching fbConfigs or visuals found
$ failed to load driver: swrast

WSL2にはGUI環境がないのでそのような場合はホストのWindows10にX Serverと呼ばれるGUI実行環境があると良いらしい。 無料で使えるVcxSrvというものがあるのでそれを使った。

sourceforge.net

エラー対応参考

odaryo.hatenablog.com github.com

試したこと

ifconfigでホストwindowsのip情報を取得しておいてDISPLAY変数を設定

export DISPLAY="192.168.x.x:0.0"

※ここで設定するipはWSL2から確認できる172.x.x.xではだめだった

WLS2上から下記のようなコマンドでWindows上で動作中のxserverのアプリが起動できることを確認

xeyes
xcalc

なお、VcrSrv起動時は下記の選択が良さげ。 私のxperiaでは下記の設定に変えてVcrSrvを再起動した時点でミラーリングできるようになった。 - multiplewindows選択 - start no client選択 - ExtraSetting - disable access controllのみチェック

またPCとAndroid端末をUSB接続したままではなぜかadb devicesがunauthorizedでしか表示されなかったので、USB接続解除後にadb connectしたところ deviceとして認識されるようになったので良かった。

ここまでやって手順2を再度実行していたったら映った!

scrcpy -m 1280 --max-fps 30

あとはscrcpyコマンドオプションで画質や画面サイズなど多少の調整は効くので、 scrcpy -h コマンドでヘルプを出して調整してみよう。


最後に

scrcpyは遅延も少なく画質も結構いいのでいい感じ。

今回の方法では有線接続ではできなかったしエラーも頻出した。このあたりはWindows用のscrcpyを普通に準備すれば簡単にできたはず。 一般的なソフトが使えるならそれに慣れることに越したことはない。Iphoneなら別のアプリも選択肢にあがるので、自分なりに満足いく方法を見つけてほしい。