「scrcpy」でAndroid画面と内部音声をPC側に出力する

Android

Androidデバイス単体で画面録画をしようとすると、負荷が掛かったり、録画用のアプリを入れたりするのが面倒で、PC側にミラーリングして処理を分散したかったのでソフトを探していました。

何か良いツールはないかと探していたら「scrcpy」がありました。

「scrcpy」について

「scrcpy」は、Android5.0以降に搭載された機能を用いてミラーリングが行える、オープンソース開発のソフトウェアです。

主に、画面ミラーリングやAndroidデバイスをPC側から操作できます。

Windows・Linux・Mac」で利用できます。

有線接続・無線接続に対応していて、有線接続の場合は面倒な手順は不要です。

無線接続の場合はadbコマンドで環境を構築する必要があります。

また、Android10以降であればAudioPlaybackCapture APIが導入されたため、内部音声も取り込めるようになりました。

内部音声をPCに出力するには「sndcpy」が必要になります。(後述)

「ウマウマクルーズ」などの有能ツールを多数作成しているamate氏によって、scrcpyとsndcpyを合体させた「scrsndcpy」が登場しました。(今から利用するならこっちがオススメです)

ダウンロードリンク

※ver1.17ではAndroid12に対応していないので、1.18以降が必要になります。

「scrcpy」を起動する

ダウンロードした「scrcpy」のzipファイルを任意の場所に解凍します。

adbデバックを有効化したAndroidデバイスを接続し、フォルダ内の「scrcpy」を実行します。

PC上に、接続したAndroidデバイスの画面が表示されます。

大体のAndroidデバイスで「scrcpy」との接続は可能ですが、一部デバイスでは初期設定のまま認識させることはできません。(例:Fire HD10などの1920×1200、1080×2400などのFHD+)

「ERROR:scrcpy -m 1024」とエラーを吐かれて、ミラーリングがうまく行きません。

この場合、コマンド(Power Shell)から「scrcpy.exe -m 1280」など…解像度を指定すると「scrcpy」を起動できます。

面倒な場合はコマンド(シェル)に、scrcpy.exeファイルをぶちこんでから後ろに「-m 12~」を付けてEnterでOK。

「sndcpy」を使用可能にする

「scrcpy」で、画面ミラーリング・PC側からデバイス操作はできますが、「scrcpy」単体では内部音声の出力ができません。

そこで、「sndcpy」を使用してPC側に音声を出力可能にします。

Android 10以降が必須かつテスト扱いで、Windows 10側には、メディアプレーヤー「VLC」のインストールが必要になります。

ちなみに、Android 9以前で試そうとしたところ「sndcpy」のアプリインストールに失敗し、試せませんでした。

ダウンロードリンク

導入手順

上記のダウンロードリンクから、「sndcpy」の配布ページへ移動し「sndcpy」のzipファイルをダウンロード。

「Windows 10」ユーザーは、2番目の「sndcpy-with-adb-windows-v1.0.zip」を選択します。

「sndcpy」のzipファイルを解凍し、フォルダ内の「sndcpy.apk」をAndroidデバイス側にインストールします。

「VLC」がインストールされた「Windows 10」のPC側から、先に「scrcpy」を起動しておきます。

「sndcpy」は「scrcpy」と違い、ソフト起動用のexeファイルがないので、Windowsの「ファイル名を指定して実行」から「sndcpy」のパッチファイルを指定して実行します。(パッチファイルを2回クリック、コマンドからの起動でも可)

Android側にインストールした「sndcpy」が起動するので「今すぐ開始」をタップ。

Android側での操作後に、コマンド側に切り替え、Enterキーを押します。

「playnig…」の後に「Playing audio…」となりPC側のオーディオ出力に、Android側の音声が再生されます。

Android側とPC側のオーディオ出力でボリュームが異なっており、Android側をミュートにしてもPC側で再生可能でした。(何かしらに使えそうです)

使ってみる

「scrcpy」は、FPS計測ツールなどでAndroidでのゲームプレイ中の”大まかな”FPSの表示ができます。

大まかと言っても、十中八九実際に近い値が計測可能なので、フレームレートの計測に割と使えます。

PC側から操作ができるので、エミュレーター感覚でAndroidを使用したりもできます。

頑張れば「動画再生や調べ物+PCゲーム+Androidゲーム」みたいな使い方で、自動プレイに任せて周回…なんてことも。

「scrcpy」&「sndcpy」で出力した画面と音声

「scrcpy」&「sndcpy」で出力した画面と音声を、OBSで録画してみました。

Android 12のPixel 3を用いて1920×1080p 30fpsにて、原神をテストプレイ。録画側は720pにダウンスケールしています。

内部のフレームレートの値もRoot化必須のfpsカウンターである「GLTools」と、誤差はあれど近い値を計測しています。

1秒弱音声が遅延してますが、趣味程度の利用であればかなり実用的だと思いました。

Android12も一応対応

Android12のPixel 6で「scrcpy」を試そうとしたら、起動しませんでした。

ver1.17では対策されたようで、開発者がver1.18以降で回避するようにアップデートし、私の環境でもver1.19にてAndroid12での動作を確認できました。

まとめ

「scrcpy」&「sndcpy」良い点

  • 表示が高速かつ低遅延
  • デバイス側のリフレッシュレートに対応
  • エミュレーター感覚でPC側から操作可能
  • Android端末側で処理しない為、端末動作に影響しない
  • Android端末側にアプリが基本不要で余計なものがない
  • adb環境の構築などの面倒な手順が不要(無線接続の場合は必要)
  • Android10以降ではsndcpyを使用して内部音声の録音が可能(βテスト扱い)
  • zip形式かつexeファイルを動作させるだけなので、インストールの手間が不要

「scrcpy」&「sndcpy」欠点

  • 全てのAndroid端末で簡単にはミラーリングできない
  • 細かい設定をする場合のコマンド起動が手間
  • sndcpyの音声出力は0.5~1s程度遅延する
  • sndcpyの導入や起動が若干手間