PR #2195 <https://github.com/Genymobile/scrcpy/pull/2195> Signed-off-by: Romain Vimont <rom@rom1v.com>
26 KiB
Only the original README is guaranteed to be up-to-date.
scrcpy (v1.17)
このアプリケーションはUSB(もしくはTCP/IP経由)で接続された Androidデバイスの表示と制御を提供します。このアプリケーションは root でのアクセス を必要としません。 このアプリケーションは GNU/Linux, Windows そして macOS 上で動作します。
以下に焦点を当てています:
- 軽量 (ネイティブ、デバイス画面表示のみ)
- パフォーマンス (30~60fps)
- クオリティ (1920x1018以上)
- 低遅延 (35~70ms)
- 短い起動時間 (初回画像を1秒以内に表示)
- 非侵入型 (デバイスに何もインストールされない)
必要要件
AndroidデバイスはAPI21(Android 5.0)以上。
Androidデバイスでadbデバッグが有効であること。
一部ののAndroidデバイスでは、キーボードとマウスを使用して制御する追加オプション を有効にする必要がある。
アプリの取得
Linux
Debian (testing と sid) とUbuntu(20.04):
apt install scrcpy
Arch Linux用AURパッケージが利用可能: scrcpy
自分でビルドも可能(心配しないでください、それほど難しくはありません。)
Windows
Windowsでは簡単に、(adb
を含む)すべての依存関係を構築済みのアーカイブを利用可能です。
scrcpy-win64-v1.17.zip
(SHA-256: 8b9e57993c707367ed10ebfe0e1ef563c7a29d9af4a355cd8b6a52a317c73eea)
Chocolateyでも利用可能です:
choco install scrcpy
choco install adb # if you don't have it yet
Scoopでも利用可能です:
scoop install scrcpy
scoop install adb # if you don't have it yet
また、アプリケーションをビルドすることも可能です。
macOS
アプリケーションはHomebrewで利用可能です。ただインストールするだけです。
brew install scrcpy
PATH
からadb
へのアクセスが必要です。もしまだ持っていない場合:
# Homebrew >= 2.6.0
brew install --cask android-platform-tools
# Homebrew < 2.6.0
brew cask install android-platform-tools
また、アプリケーションをビルドすることも可能です。
実行
Androidデバイスを接続し、実行:
scrcpy
次のコマンドでリストされるコマンドライン引数も受け付けます:
scrcpy --help
機能
キャプチャ構成
サイズ削減
Androidデバイスを低解像度でミラーリングする場合、パフォーマンス向上に便利な 場合があります。
幅と高さをある値に制限するには(例:1024):
scrcpy --max-size 1024
scrcpy -m 1024 # short version
一方のサイズはデバイスのアスペクト比が維持されるように計算されます。 この方法では、1920x1080のデバイスでは1024x576にミラーリングされます。
ビットレート変更
ビットレートの初期値は8Mbpsです。ビットレートを変更するには(例:2Mbpsに変更):
scrcpy --bit-rate 2M
scrcpy -b 2M # short version
フレームレート制限
キャプチャするフレームレートを制限できます:
scrcpy --max-fps 15
この機能はAndroid 10からオフィシャルサポートとなっていますが、以前のバージョンでも 動作する可能性があります。
トリミング
デバイスの画面は、画面の一部のみをミラーリングするようにトリミングできます。
これは、例えばOculus Goの片方の目をミラーリングする場合に便利です。:
scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
もし--max-size
も指定されている場合、トリミング後にサイズ変更が適用されます。
ビデオの向きをロックする
ミラーリングの向きをロックするには:
scrcpy --lock-video-orientation 0 # natural orientation
scrcpy --lock-video-orientation 1 # 90° counterclockwise
scrcpy --lock-video-orientation 2 # 180°
scrcpy --lock-video-orientation 3 # 90° clockwise
この設定は録画の向きに影響します。
エンコーダ
いくつかのデバイスでは一つ以上のエンコーダを持ちます。それらのいくつかは、 問題やクラッシュを引き起こします。 別のエンコーダを選択することが可能です:
scrcpy --encoder OMX.qcom.video.encoder.avc
利用可能なエンコーダをリストするために、無効なエンコーダ名を渡すことができます。 エラーでは利用可能なエンコーダを提供します。
scrcpy --encoder _
録画
ミラーリング中に画面の録画をすることが可能です:
scrcpy --record file.mp4
scrcpy -r file.mkv
録画中にミラーリングを無効にするには:
scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# Ctrl+Cで録画を中断する
"スキップされたフレーム"はリアルタイムで表示されなくても録画されます (パフォーマンス上の理由)。
フレームはデバイス上で タイムスタンプされる ため パケット遅延のバリエーション は 録画されたファイルに影響を与えません。
接続
ワイヤレス
Scrcpy はデバイスとの通信にadb
を使用します。そしてadb
はTCP/IPを介し
デバイスに接続することができます:
-
あなたのコンピュータと同じWi-Fiに接続します。
-
あなたのIPアドレスを取得します。設定 → 端末情報 → ステータス情報、 もしくは、このコマンドを実行します:
adb shell ip route | awk '{print $9}'
-
あなたのデバイスでTCP/IPを介したadbを有効にします:
adb tcpip 5555
-
あなたのデバイスの接続を外します。
-
あなたのデバイスに接続します:
adb connect DEVICE_IP:5555
(DEVICE_IP
は置き換える) -
通常通り
scrcpy
を実行します。
この方法はビットレートと定義を減らすのにおそらく有用です:
scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # short version
マルチデバイス
もしadb devices
でいくつかのデバイスがリストされる場合、 シリアルナンバー を
指定する必要があります:
scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # short version
デバイスがTCP/IPを介して接続されている場合:
scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # short version
複数のデバイスに対して、複数の scrcpy インスタンスを開始することができます。
デバイス接続での自動起動
AutoAdbを使用可能です:
autoadb scrcpy -s '{}'
SSHトンネル
リモートデバイスに接続するため、ローカルadb
クライアントからリモートadb
サーバーへ
接続することが可能です(同じバージョンの adb プロトコルを使用している場合):
adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# keep this open
他の端末から:
scrcpy
リモートポート転送の有効化を回避するためには、代わりに転送接続を
強制することができます(-R
の代わりに-L
を使用することに注意):
adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer
# keep this open
他の端末から:
scrcpy --force-adb-forward
ワイヤレス接続と同様に、クオリティを下げると便利な場合があります:
scrcpy -b2M -m800 --max-fps 15
ウィンドウ構成
タイトル
ウィンドウのタイトルはデバイスモデルが初期値です。これは変更できます:
scrcpy --window-title 'My device'
位置とサイズ
ウィンドウの位置とサイズの初期値を指定できます:
scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
ボーダーレス
ウィンドウの装飾を無効化するには:
scrcpy --window-borderless
常に画面のトップ
scrcpyの画面を常にトップにするには:
scrcpy --always-on-top
フルスクリーン
アプリケーションを直接フルスクリーンで開始できます:
scrcpy --fullscreen
scrcpy -f # short version
フルスクリーンは、次のコマンドで動的に切り替えることができます MOD+f
回転
ウィンドウは回転することができます:
scrcpy --rotation 1
設定可能な値:
0
: 回転なし1
: 90° 反時計回り2
: 180°3
: 90° 時計回り
回転は次のコマンドで動的に変更することができます。 MOD+← (左) 、 MOD+→ (右)
scrcpy は3つの回転を管理することに注意:
- MOD+rはデバイスに縦向きと横向きの切り替えを要求する (現在実行中のアプリで要求している向きをサポートしている場合、拒否する場合がある)
--lock-video-orientation
は、ミラーリングする向きを 変更する(デバイスからPCへ送信される向き)。録画に影響します。--rotation
(もしくはMOD+←/MOD+→) は、ウィンドウのコンテンツのみを回転します。これは表示にのみに影響し、録画 には影響しません。
他のミラーリングオプション
Read-only リードオンリー
制御を無効にするには(デバイスと対話する全てのもの:入力キー、マウスイベント、ファイル のドラッグ&ドロップ):
scrcpy --no-control
scrcpy -n
ディスプレイ
いくつか利用可能なディスプレイがある場合、ミラーリングするディスプレイを選択できます:
scrcpy --display 1
ディスプレイIDのリストは次の方法で取得できます:
adb shell dumpsys display # search "mDisplayId=" in the output
セカンダリディスプレイは、デバイスが少なくともAndroid 10の場合にコントロール可能です。 (それ以外ではリードオンリーでミラーリングされます)
起動状態にする
デバイス接続時、少し遅れてからデバイスのスリープを防ぐには:
scrcpy --stay-awake
scrcpy -w
初期状態はscrcpyが閉じられた時に保存されます。
画面OFF
コマンドラインオプションを使用することで、ミラーリングの開始時にデバイスの画面を OFFにすることができます:
scrcpy --turn-screen-off
scrcpy -S
もしくは、MOD+oを押すことでいつでもできます。
元に戻すには、MOD+Shift+oを押します。
Androidでは、POWER
ボタンはいつでも画面を表示します。
便宜上、POWER
がscrcpyを介して(右クリックもしくはMOD+pを
介して)送信される場合、(ベストエフォートベースで)少し遅れて、強制的に画面を
非表示にします。
物理的なPOWER
ボタンを押しても画面は表示されます。
このオプションはデバイスがスリープしないようにすることにも役立ちます:
scrcpy --turn-screen-off --stay-awake
scrcpy -Sw
期限切れフレームをレンダリングする
初期状態では、待ち時間を最小限にするために、scrcpy は最後にデコードされたフレーム を使用可能にレンダリングし、前のフレームを削除します。
全フレームのレンダリングを強制するには(待ち時間が長くなる可能性があります):
scrcpy --render-expired-frames
タッチを表示
プレゼンテーションの場合(物理デバイス上で)物理的なタッチを表示すると便利な場合があります。
Androidはこの機能を 開発者オプション で提供します。
Scrcpy は開始時にこの機能を有効にし、終了時に初期値を復元するオプションを 提供します:
scrcpy --show-touches
scrcpy -t
(デバイス上で指を使った) 物理的な タッチのみ表示されることに注意してください。
スクリーンセーバー無効
初期状態では、scrcpyはコンピュータ上でスクリーンセーバーが実行される事を 妨げません。
これを無効にするには:
scrcpy --disable-screensaver
入力制御
デバイス画面の回転
MOD+rを押すことで、縦向きと横向きを切り替えます。
フォアグラウンドのアプリケーションが要求された向きをサポートしている場合のみ 回転することに注意してください。
コピー-ペースト
Androidのクリップボードが変更される度に、コンピュータのクリップボードに 自動的に同期されます。
Ctrlのショートカットは全てデバイスに転送されます。特に:
- Ctrl+c 通常はコピーします
- Ctrl+x 通常はカットします
- Ctrl+v 通常はペーストします(コンピュータとデバイスの クリップボードが同期された後)
通常は期待通りに動作します。
しかしながら、実際の動作はアクティブなアプリケーションに依存します。例えば、 Termux は代わりにCtrl+cでSIGINTを送信します、そして、 K-9 Mail は新しいメッセージを作成します。
このようなケースでコピー、カットそしてペーストをするには(Android 7以上での サポートのみですが):
- MOD+c
COPY
を挿入 - MOD+x
CUT
を挿入 - MOD+v
PASTE
を挿入(コンピュータとデバイスの クリップボードが同期された後)
加えて、MOD+Shift+vはコンピュータの クリップボードテキストにキーイベントのシーケンスとして挿入することを許可します。 これはコンポーネントがテキストのペーストを許可しない場合(例えば Termux)に 有用ですが、非ASCIIコンテンツを壊す可能性があります。
警告: デバイスにコンピュータのクリップボードを(Ctrl+v またはMOD+vを介して)ペーストすることは、デバイスの クリップボードにコンテンツをコピーします。結果としてどのAndoridアプリケーションも そのコンテンツを読み取ることができます。機密性の高いコンテンツ(例えばパスワードなど) をこの方法でペーストすることは避けてください。
プログラムでデバイスのクリップボードを設定した場合、一部のデバイスは期待どおりに
動作しません。--legacy-paste
オプションは、コンピュータのクリップボードテキストを
キーイベントのシーケンスとして挿入するため(MOD+Shift
+vと同じ方法)、Ctrl+vと
MOD+vの動作の変更を提供します。
ピンチしてズームする
"ピンチしてズームする"をシミュレートするには: Ctrl+click-and-move
より正確にするには、左クリックボタンを押している間、Ctrlを 押したままにします。左クリックボタンを離すまで、全てのマウスの動きは、(アプリでサポート されている場合)画面の中心を基準として、コンテンツを拡大縮小および回転します。
具体的には、scrcpyは画面の中央を反転した位置にある"バーチャルフィンガー"から 追加のタッチイベントを生成します。
テキストインジェクション環境設定
テキストをタイプした時に生成される2種類のイベントがあります:
- key events はキーを押したときと離したことを通知します。
- text events はテキストが入力されたことを通知します。
初期状態で、文字はキーイベントで挿入されるため、キーボードはゲームで期待通りに 動作します(通常はWASDキー)。
しかし、これは問題を引き起こすかもしれません。もしこのような問題が 発生した場合は、この方法で回避できます:
scrcpy --prefer-text
(しかしこの方法はゲームのキーボードの動作を壊します)
キーの繰り返し
初期状態では、キーの押しっぱなしは繰り返しのキーイベントを生成します。 これらのイベントが使われない場合でも、この方法は一部のゲームでパフォーマンスの 問題を引き起す可能性があります。
繰り返しのキーイベントの転送を回避するためには:
scrcpy --no-key-repeat
右クリックと真ん中クリック
初期状態では、右クリックはバックの動作(もしくはパワーオン)を起こし、真ん中クリック ではホーム画面へ戻ります。このショートカットを無効にし、代わりにデバイスへクリックを 転送するには:
scrcpy --forward-all-clicks
ファイルのドロップ
APKのインストール
APKをインストールするには、(.apk
で終わる)APKファイルを scrcpy の画面に
ドラッグ&ドロップします。
見た目のフィードバックはありません。コンソールにログが出力されます。
デバイスにファイルを送る
デバイスの/sdcard/
ディレクトリにファイルを送るには、(APKではない)ファイルを
scrcpy の画面にドラッグ&ドロップします。
見た目のフィードバックはありません。コンソールにログが出力されます。
転送先ディレクトリを起動時に変更することができます:
scrcpy --push-target /sdcard/foo/bar/
音声転送
音声は scrcpy では転送されません。sndcpyを使用します。
issue #14も参照ください。
ショートカット
次のリストでは、MODでショートカット変更します。初期状態では、 (left)Altまたは(left)Superです。
これは--shortcut-mod
で変更することができます。可能なキーは
lctrl
、rctrl
、lalt
、 ralt
、 lsuper
そしてrsuper
です。例えば:
# use RCtrl for shortcuts
scrcpy --shortcut-mod=rctrl
# use either LCtrl+LAlt or LSuper for shortcuts
scrcpy --shortcut-mod=lctrl+lalt,lsuper
Superは通常WindowsもしくはCmdキーです。
アクション | ショートカット |
---|---|
フルスクリーンモードへの切り替え | MOD+f |
ディスプレイを左に回転 | MOD+← (左) |
ディスプレイを右に回転 | MOD+→ (右) |
ウィンドウサイズを変更して1:1に変更(ピクセルパーフェクト) | MOD+g |
ウィンドウサイズを変更して黒い境界線を削除 | MOD+w | ダブルクリック¹ |
HOME をクリック |
MOD+h | 真ん中クリック |
BACK をクリック |
MOD+b | 右クリック² |
APP_SWITCH をクリック |
MOD+s |
MENU (画面のアンロック)をクリック |
MOD+m |
VOLUME_UP をクリック |
MOD+↑ (上) |
VOLUME_DOWN をクリック |
MOD+↓ (下) |
POWER をクリック |
MOD+p |
電源オン | 右クリック² |
デバイス画面をオフにする(ミラーリングしたまま) | MOD+o |
デバイス画面をオンにする | MOD+Shift+o |
デバイス画面を回転する | MOD+r |
通知パネルを展開する | MOD+n |
通知パネルを折りたたむ | MOD+Shift+n |
クリップボードへのコピー³ | MOD+c |
クリップボードへのカット³ | MOD+x |
クリップボードとペーストの同期³ | MOD+v |
コンピュータのクリップボードテキストの挿入 | MOD+Shift+v |
FPSカウンタ有効/無効(標準入出力上) | MOD+i |
ピンチしてズームする | Ctrl+クリック&移動 |
¹黒い境界線を削除するため、境界線上でダブルクリック
²もしスクリーンがオフの場合、右クリックでスクリーンをオンする。それ以外の場合はBackを押します.
³Android 7以上のみ.
全てのCtrl+キー ショートカットはデバイスに転送されます、 そのためアクティブなアプリケーションによって処理されます。
カスタムパス
特定の adb バイナリを使用する場合、そのパスを環境変数ADB
で構成します:
ADB=/path/to/adb scrcpy
scrcpy-server
ファイルのパスを上書きするには、SCRCPY_SERVER_PATH
で
そのパスを構成します。
なぜ scrcpy?
同僚が私に、gnirehtetのように発音できない名前を見つけるように要求しました。
strcpy
はstringをコピーします。scrcpy
はscreenをコピーします。
ビルド方法は?
BUILDを参照してください。
共通の問題
FAQを参照してください。
開発者
開発者のページを読んでください。
ライセンス
Copyright (C) 2018 Genymobile
Copyright (C) 2018-2021 Romain Vimont
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.