0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

scrcpy が高速・低遅延な理由

0
Posted at

導入

image.png

scrcpy は「Android 画面を PC にミラーリングしつつ操作もできる」便利なツールですが、内部的にはどのように処理されているのか

本記事ではPCからAndroidをミラーリングするまでの流れと、どのように高速・低遅延を実現しているかをまとめています

📡 1. ADB(Android Debug Bridge)で接続する

scrcpy は Android と通信する際、すべて ADB を使います。
つまり、Android 側には専用アプリをインストールしません。

仕組み

  1. PC から Android へ scrcpy-server.jar を 一時的に push

  2. ADB shell 経由で server.jar を実行

  3. この scrcpy-server が Android 画面をエンコード

  4. PC 側 scrcpy がそのストリームを受け取る

scrcpy は「インストール不要(non-intrusive)」とよく言われるのは、この方式のおかげです。

🎥 2. Android 側:画面を取得 → 動画にエンコード

2-1. 画面キャプチャ(MediaProjection)

Android 側の scrcpy-server は MediaProjection API を使用して画面をキャプチャします。

OS が描画した直後のフレームを取得

1 フレームは数 MB 以上と巨大なので、そのまま送ると帯域不足

2-2. ハードウェアエンコード(MediaCodec)

次に MediaCodec を使って、画面を H.264 または H.265 にエンコードします。

Snapdragon / Exynos / Tensor 等の ハードウェアエンコーダを使用

ビットレートは 2〜10Mbps 程度

1080p60fps でも USB2.0 で間に合う

ここが scrcpy が速い理由

生の画面では毎秒数百 MB

しかし H.264 に圧縮すると 10Mbps 程度(約1/100)
→ USB や Wi-Fi でもリアルタイムで転送できる

📤 3. エンコード済みデータを PC に送る(ADB exec-out)

scrcpy-server は 標準出力(stdout)に H.264 / H.265 のバイト列 を吐き出します。

PC 側では実質こういう流れになっています:

adb exec-out scrcpy-server.jar # stdout から動画ストリームを受信

専用プロトコルなし(ただのバイト列)

USB / Wi-Fi どちらでも同じ仕組み

中間層がないため高速・低遅延

🖥 4. PC 側:デコードして画面に描画

PC 側の scrcpy(C/C++ 製)は以下を担当します:

4-1. デコード(FFmpeg / SDL2)

H.264/H.265 を PC 側でデコード

GPU デコードが可能で非常に高速

1 フレーム遅れ程度の低遅延

4-2. ウィンドウに描画

SDL2 により、高フレームレートのまま描画されます。

5. PC → Android への入力(逆方向)

scrcpy は 操作イベントを ADB で逆方向に送ります。

例:

PC 操作 Android 側の実現方法
クリック input tap x y
ドラッグ input swipe x1 y1 x2 y2 duration
キーボード IME の commitText などを使用

つまり ミラーリングも入力も ADB 一本で成立 しています。

6. 全体フロー(図)

⚡ scrcpy が高速・低遅延な理由まとめ

  • 生画像ではなく動画(H.264/H.265)で送る → 帯域激減
  • Android の HW エンコーダ使用 → 超高速
  • プロトコルはシンプル(ほぼバイトストリーム)
  • アプリをインストールしない(毎回 server.jar を push)
  • 入力は ADB shell 経由 → 追加アプリ不要

これらが組み合わさって 超軽量・超低遅延のミラーリング が実現しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?