scrcpy 詳解:Android の画面転送と操作を低侵入で実現する構造
ホストの C クライアント、端末の Java server、ADB、映像・音声・制御 socket、USB/TCP 接続、権限、Apache-2.0 から scrcpy 4.1 を説明する。
位置付けと現在の動き
scrcpy は Genymobile が管理する Android 画面転送・操作ツールで、USB と TCP/IP、Linux、Windows、macOS に対応する。取得時点で約 146,126 Star があり、4.1 は 7 月に VP8/VP9 などを追加した。root は不要で、端末へ常駐アプリを残さない。操作権限の土台は ADB と利用者が承認したデバッグ接続である。
主な用途と機能
実機アプリ開発、デモ録画、PC の入力による端末操作、テスト台の端末選択、カメラや仮想画面の利用が主な用途である。映像、Android 11 以降の音声、録画、双方向クリップボード、ファイル転送、仮想画面、HID 入力、ゲームパッドを扱う。利用可能な機能は Android 版、端末の encoder、ホスト OS によって変わる。
アーキテクチャと動作原理
二つの部品で動く。ホストの C クライアントが ADB 経由で Java server を端末へ送り、起動する。映像、音声、制御は別 socket を使い、媒体ごとに無効化できる。端末側が画面を符号化し、ホストは FFmpeg で復号して SDL で表示する。既定では長くためず到着した frame をすぐ表示し、操作遅延を抑える。
技術構成とシステム境界
ホストは主に C、端末 server は Java で、ADB、FFmpeg、SDL 3、libusb、Meson、Ninja を周辺に使う。入力イベントはホストから端末へ送り、回転と frame 寸法は主に端末側が処理する。性能は端末のハードウェア encoder、解像度、bitrate、USB/Wi-Fi 品質、ホスト復号で決まり、公開された例示値を対象端末の保証として使えない。
最小の導入手順
唯一の公式 GitHub Release または文書に列挙されたパッケージから入手し、Android の USB デバッグを有効にし、PC の指紋を確認して `scrcpy` を実行する。無線は USB 接続中に `scrcpy --tcpip` で設定するか、既に待受中の IP と port へ接続する。複数端末がある場合は serial、USB、TCP/IP の選択を明示する。
利点、制約、運用コスト
アカウント、インターネット、root が不要で、表示、入力、録画、ファイルを一つで扱える。Android 専用で、メーカーのデバッグ設定と encoder 実装に左右される。一部端末は入力注入に追加の USB debugging security 設定を求める。高解像度と無線は遅延を増やし、保護された内容は取得できない場合があるため、対象機で確認する。