Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
644a5ef14a | ||
|
|
498ad23e98 | ||
|
|
07a85b7c94 | ||
|
|
2812de8a9a | ||
|
|
d50c678a5f | ||
|
|
b77932a5b7 | ||
|
|
47d16a57ac | ||
|
|
fc5de88eaa | ||
|
|
fda293f9bb | ||
|
|
38f392f08f | ||
|
|
8414b688f0 | ||
|
|
6a217b70f4 | ||
|
|
3a4b10a38d | ||
|
|
1fb7957525 | ||
|
|
19ad107f1f |
129
BUILD.md
129
BUILD.md
@@ -2,11 +2,43 @@
|
|||||||
|
|
||||||
Here are the instructions to build _scrcpy_ (client and server).
|
Here are the instructions to build _scrcpy_ (client and server).
|
||||||
|
|
||||||
You may want to build only the client: the server binary, which will be pushed
|
|
||||||
to the Android device, does not depend on your system and architecture. In that
|
|
||||||
case, use the [prebuilt server] (so you will not need Java or the Android SDK).
|
|
||||||
|
|
||||||
[prebuilt server]: #prebuilt-server
|
## Simple
|
||||||
|
|
||||||
|
If you just want to install the latest release from `master`, follow this
|
||||||
|
simplified process.
|
||||||
|
|
||||||
|
First, you need to install the required packages:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# for Debian/Ubuntu
|
||||||
|
sudo apt install ffmpeg libsdl2-2.0-0 adb wget \
|
||||||
|
gcc git pkg-config meson ninja-build \
|
||||||
|
libavcodec-dev libavformat-dev libavutil-dev libsdl2-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Then clone the repo and execute the installation script
|
||||||
|
([source](install_release.sh)):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/Genymobile/scrcpy
|
||||||
|
cd scrcpy
|
||||||
|
./install_release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
When a new release is out, update the repo and reinstall:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull
|
||||||
|
./install_release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
To uninstall:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ninja -Cbuild-auto uninstall
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Branches
|
## Branches
|
||||||
|
|
||||||
@@ -60,8 +92,7 @@ sudo apt install ffmpeg libsdl2-2.0-0 adb
|
|||||||
|
|
||||||
# client build dependencies
|
# client build dependencies
|
||||||
sudo apt install gcc git pkg-config meson ninja-build \
|
sudo apt install gcc git pkg-config meson ninja-build \
|
||||||
libavcodec-dev libavformat-dev libavutil-dev \
|
libavcodec-dev libavformat-dev libavutil-dev libsdl2-dev
|
||||||
libsdl2-dev
|
|
||||||
|
|
||||||
# server build dependencies
|
# server build dependencies
|
||||||
sudo apt install openjdk-11-jdk
|
sudo apt install openjdk-11-jdk
|
||||||
@@ -173,12 +204,12 @@ brew install pkg-config meson
|
|||||||
```
|
```
|
||||||
|
|
||||||
Additionally, if you want to build the server, install Java 8 from Caskroom, and
|
Additionally, if you want to build the server, install Java 8 from Caskroom, and
|
||||||
make it avaliable from the `PATH`:
|
make it available from the `PATH`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew tap homebrew/cask-versions
|
brew tap homebrew/cask-versions
|
||||||
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
|
brew install adoptopenjdk/openjdk/adoptopenjdk11
|
||||||
export JAVA_HOME="$(/usr/libexec/java_home --version 1.8)"
|
export JAVA_HOME="$(/usr/libexec/java_home --version 1.11)"
|
||||||
export PATH="$JAVA_HOME/bin:$PATH"
|
export PATH="$JAVA_HOME/bin:$PATH"
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -189,8 +220,27 @@ See [pierlon/scrcpy-docker](https://github.com/pierlon/scrcpy-docker).
|
|||||||
|
|
||||||
## Common steps
|
## Common steps
|
||||||
|
|
||||||
If you want to build the server, install the [Android SDK] (_Android Studio_),
|
**As a non-root user**, clone the project:
|
||||||
and set `ANDROID_SDK_ROOT` to its directory. For example:
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/Genymobile/scrcpy
|
||||||
|
cd scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
You may want to build only the client: the server binary, which will be pushed
|
||||||
|
to the Android device, does not depend on your system and architecture. In that
|
||||||
|
case, use the [prebuilt server] (so you will not need Java or the Android SDK).
|
||||||
|
|
||||||
|
[prebuilt server]: #option-2-use-prebuilt-server
|
||||||
|
|
||||||
|
|
||||||
|
#### Option 1: Build everything from sources
|
||||||
|
|
||||||
|
Install the [Android SDK] (_Android Studio_), and set `ANDROID_SDK_ROOT` to its
|
||||||
|
directory. For example:
|
||||||
|
|
||||||
[Android SDK]: https://developer.android.com/studio/index.html
|
[Android SDK]: https://developer.android.com/studio/index.html
|
||||||
|
|
||||||
@@ -203,20 +253,11 @@ export ANDROID_SDK_ROOT=~/Library/Android/sdk
|
|||||||
set ANDROID_SDK_ROOT=%LOCALAPPDATA%\Android\sdk
|
set ANDROID_SDK_ROOT=%LOCALAPPDATA%\Android\sdk
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't want to build the server, use the [prebuilt server].
|
|
||||||
|
|
||||||
Clone the project:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/Genymobile/scrcpy
|
|
||||||
cd scrcpy
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, build:
|
Then, build:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
meson x --buildtype release --strip -Db_lto=true
|
meson x --buildtype release --strip -Db_lto=true
|
||||||
ninja -Cx
|
ninja -Cx # DO NOT RUN AS ROOT
|
||||||
```
|
```
|
||||||
|
|
||||||
_Note: `ninja` [must][ninja-user] be run as a non-root user (only `ninja
|
_Note: `ninja` [must][ninja-user] be run as a non-root user (only `ninja
|
||||||
@@ -225,9 +266,27 @@ install` must be run as root)._
|
|||||||
[ninja-user]: https://github.com/Genymobile/scrcpy/commit/4c49b27e9f6be02b8e63b508b60535426bd0291a
|
[ninja-user]: https://github.com/Genymobile/scrcpy/commit/4c49b27e9f6be02b8e63b508b60535426bd0291a
|
||||||
|
|
||||||
|
|
||||||
### Run
|
#### Option 2: Use prebuilt server
|
||||||
|
|
||||||
To run without installing:
|
- [`scrcpy-server-v1.17`][direct-scrcpy-server]
|
||||||
|
_(SHA-256: 11b5ad2d1bc9b9730fb7254a78efd71a8ff46b1938ff468e47a21b653a1b6725)_
|
||||||
|
|
||||||
|
[direct-scrcpy-server]: https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-server-v1.17
|
||||||
|
|
||||||
|
Download the prebuilt server somewhere, and specify its path during the Meson
|
||||||
|
configuration:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
meson x --buildtype release --strip -Db_lto=true \
|
||||||
|
-Dprebuilt_server=/path/to/scrcpy-server
|
||||||
|
ninja -Cx # DO NOT RUN AS ROOT
|
||||||
|
```
|
||||||
|
|
||||||
|
The server only works with a matching client version (this server works with the
|
||||||
|
`master` branch).
|
||||||
|
|
||||||
|
|
||||||
|
### Run without installing:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./run x [options]
|
./run x [options]
|
||||||
@@ -242,32 +301,16 @@ After a successful build, you can install _scrcpy_ on the system:
|
|||||||
sudo ninja -Cx install # without sudo on Windows
|
sudo ninja -Cx install # without sudo on Windows
|
||||||
```
|
```
|
||||||
|
|
||||||
This installs two files:
|
This installs three files:
|
||||||
|
|
||||||
- `/usr/local/bin/scrcpy`
|
- `/usr/local/bin/scrcpy`
|
||||||
- `/usr/local/share/scrcpy/scrcpy-server`
|
- `/usr/local/share/scrcpy/scrcpy-server`
|
||||||
|
- `/usr/local/share/man/man1/scrcpy.1`
|
||||||
Just remove them to "uninstall" the application.
|
|
||||||
|
|
||||||
You can then [run](README.md#run) _scrcpy_.
|
You can then [run](README.md#run) _scrcpy_.
|
||||||
|
|
||||||
|
### Uninstall
|
||||||
## Prebuilt server
|
|
||||||
|
|
||||||
- [`scrcpy-server-v1.17`][direct-scrcpy-server]
|
|
||||||
_(SHA-256: 11b5ad2d1bc9b9730fb7254a78efd71a8ff46b1938ff468e47a21b653a1b6725_
|
|
||||||
|
|
||||||
[direct-scrcpy-server]: https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-server-v1.17
|
|
||||||
|
|
||||||
Download the prebuilt server somewhere, and specify its path during the Meson
|
|
||||||
configuration:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
meson x --buildtype release --strip -Db_lto=true \
|
sudo ninja -Cx uninstall # without sudo on Windows
|
||||||
-Dprebuilt_server=/path/to/scrcpy-server
|
|
||||||
ninja -Cx
|
|
||||||
sudo ninja -Cx install
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The server only works with a matching client version (this server works with the
|
|
||||||
`master` branch).
|
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ There are two [frames][video_buffer] simultaneously in memory:
|
|||||||
- the **rendering** frame, rendered in a texture from the main thread.
|
- the **rendering** frame, rendered in a texture from the main thread.
|
||||||
|
|
||||||
When a new decoded frame is available, the decoder _swaps_ the decoding and
|
When a new decoded frame is available, the decoder _swaps_ the decoding and
|
||||||
rendering frame (with proper synchronization). Thus, it immediatly starts
|
rendering frame (with proper synchronization). Thus, it immediately starts
|
||||||
to decode a new frame while the main thread renders the last one.
|
to decode a new frame while the main thread renders the last one.
|
||||||
|
|
||||||
If a [recorder] is present (i.e. `--record` is enabled), then it muxes the raw
|
If a [recorder] is present (i.e. `--record` is enabled), then it muxes the raw
|
||||||
|
|||||||
@@ -69,10 +69,7 @@ Anda juga bisa [membangun aplikasi secara manual][BUILD] (jangan khawatir, tidak
|
|||||||
|
|
||||||
Untuk Windows, untuk kesederhanaan, arsip prebuilt dengan semua dependensi (termasuk `adb`) tersedia :
|
Untuk Windows, untuk kesederhanaan, arsip prebuilt dengan semua dependensi (termasuk `adb`) tersedia :
|
||||||
|
|
||||||
- [`scrcpy-win64-v1.16.zip`][direct-win64]
|
- [README](README.md#windows)
|
||||||
_(SHA-256: 3f30dc5db1a2f95c2b40a0f5de91ec1642d9f53799250a8c529bc882bc0918f0)_
|
|
||||||
|
|
||||||
[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.16/scrcpy-win64-v1.16.zip
|
|
||||||
|
|
||||||
Ini juga tersedia di [Chocolatey]:
|
Ini juga tersedia di [Chocolatey]:
|
||||||
|
|
||||||
|
|||||||
725
README.jp.md
Normal file
725
README.jp.md
Normal file
@@ -0,0 +1,725 @@
|
|||||||
|
_Only the original [README](README.md) is guaranteed to be up-to-date._
|
||||||
|
|
||||||
|
# scrcpy (v1.17)
|
||||||
|
|
||||||
|
このアプリケーションはUSB(もしくは[TCP/IP経由][article-tcpip])で接続されたAndroidデバイスの表示と制御を提供します。このアプリケーションは _root_ でのアクセスを必要としません。このアプリケーションは _GNU/Linux_ 、 _Windows_ そして _macOS_ 上で動作します。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
以下に焦点を当てています:
|
||||||
|
|
||||||
|
- **軽量** (ネイティブ、デバイス画面表示のみ)
|
||||||
|
- **パフォーマンス** (30~60fps)
|
||||||
|
- **クオリティ** (1920x1080以上)
|
||||||
|
- **低遅延** ([35~70ms][lowlatency])
|
||||||
|
- **短い起動時間** (初回画像を1秒以内に表示)
|
||||||
|
- **非侵入型** (デバイスに何もインストールされていない状態になる)
|
||||||
|
|
||||||
|
[lowlatency]: https://github.com/Genymobile/scrcpy/pull/646
|
||||||
|
|
||||||
|
|
||||||
|
## 必要要件
|
||||||
|
|
||||||
|
AndroidデバイスはAPI21(Android 5.0)以上。
|
||||||
|
|
||||||
|
Androidデバイスで[adbデバッグが有効][enable-adb]であること。
|
||||||
|
|
||||||
|
[enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling
|
||||||
|
|
||||||
|
一部のAndroidデバイスでは、キーボードとマウスを使用して制御する[追加オプション][control]を有効にする必要がある。
|
||||||
|
|
||||||
|
[control]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323
|
||||||
|
|
||||||
|
|
||||||
|
## アプリの取得
|
||||||
|
|
||||||
|
<a href="https://repology.org/project/scrcpy/versions"><img src="https://repology.org/badge/vertical-allrepos/scrcpy.svg" alt="Packaging status" align="right"></a>
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
Debian (_testing_ と _sid_) とUbuntu(20.04):
|
||||||
|
|
||||||
|
```
|
||||||
|
apt install scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
[Snap]パッケージが利用可能: [`scrcpy`][snap-link]
|
||||||
|
|
||||||
|
[snap-link]: https://snapstats.org/snaps/scrcpy
|
||||||
|
|
||||||
|
[snap]: https://en.wikipedia.org/wiki/Snappy_(package_manager)
|
||||||
|
|
||||||
|
Fedora用[COPR]パッケージが利用可能: [`scrcpy`][copr-link]
|
||||||
|
|
||||||
|
[COPR]: https://fedoraproject.org/wiki/Category:Copr
|
||||||
|
[copr-link]: https://copr.fedorainfracloud.org/coprs/zeno/scrcpy/
|
||||||
|
|
||||||
|
Arch Linux用[AUR]パッケージが利用可能: [`scrcpy`][aur-link]
|
||||||
|
|
||||||
|
[AUR]: https://wiki.archlinux.org/index.php/Arch_User_Repository
|
||||||
|
[aur-link]: https://aur.archlinux.org/packages/scrcpy/
|
||||||
|
|
||||||
|
Gentoo用[Ebuild]が利用可能: [`scrcpy`][ebuild-link]
|
||||||
|
|
||||||
|
[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild
|
||||||
|
[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy
|
||||||
|
|
||||||
|
[自分でビルド][BUILD]も可能(心配しないでください、それほど難しくはありません。)
|
||||||
|
|
||||||
|
|
||||||
|
### Windows
|
||||||
|
|
||||||
|
Windowsでは簡単に、(`adb`を含む)すべての依存関係を構築済みのアーカイブを利用可能です。
|
||||||
|
|
||||||
|
- [README](README.md#windows)
|
||||||
|
|
||||||
|
[Chocolatey]でも利用可能です:
|
||||||
|
|
||||||
|
[Chocolatey]: https://chocolatey.org/
|
||||||
|
|
||||||
|
```bash
|
||||||
|
choco install scrcpy
|
||||||
|
choco install adb # まだ入手していない場合
|
||||||
|
```
|
||||||
|
|
||||||
|
[Scoop]でも利用可能です:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scoop install scrcpy
|
||||||
|
scoop install adb # まだ入手していない場合
|
||||||
|
```
|
||||||
|
|
||||||
|
[Scoop]: https://scoop.sh
|
||||||
|
|
||||||
|
また、[アプリケーションをビルド][BUILD]することも可能です。
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|
アプリケーションは[Homebrew]で利用可能です。ただインストールするだけです。
|
||||||
|
|
||||||
|
[Homebrew]: https://brew.sh/
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
`PATH`から`adb`へのアクセスが必要です。もしまだ持っていない場合:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Homebrew >= 2.6.0
|
||||||
|
brew install --cask android-platform-tools
|
||||||
|
|
||||||
|
# Homebrew < 2.6.0
|
||||||
|
brew cask install android-platform-tools
|
||||||
|
```
|
||||||
|
|
||||||
|
また、[アプリケーションをビルド][BUILD]することも可能です。
|
||||||
|
|
||||||
|
|
||||||
|
## 実行
|
||||||
|
|
||||||
|
Androidデバイスを接続し、実行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
次のコマンドでリストされるコマンドライン引数も受け付けます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## 機能
|
||||||
|
|
||||||
|
### キャプチャ構成
|
||||||
|
|
||||||
|
#### サイズ削減
|
||||||
|
|
||||||
|
Androidデバイスを低解像度でミラーリングする場合、パフォーマンス向上に便利な場合があります。
|
||||||
|
|
||||||
|
幅と高さをある値(例:1024)に制限するには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --max-size 1024
|
||||||
|
scrcpy -m 1024 # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
一方のサイズはデバイスのアスペクト比が維持されるように計算されます。この方法では、1920x1080のデバイスでは1024x576にミラーリングされます。
|
||||||
|
|
||||||
|
|
||||||
|
#### ビットレート変更
|
||||||
|
|
||||||
|
ビットレートの初期値は8Mbpsです。ビットレートを変更するには(例:2Mbpsに変更):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --bit-rate 2M
|
||||||
|
scrcpy -b 2M # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
#### フレームレート制限
|
||||||
|
|
||||||
|
キャプチャするフレームレートを制限できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --max-fps 15
|
||||||
|
```
|
||||||
|
|
||||||
|
この機能はAndroid 10からオフィシャルサポートとなっていますが、以前のバージョンでも動作する可能性があります。
|
||||||
|
|
||||||
|
#### トリミング
|
||||||
|
|
||||||
|
デバイスの画面は、画面の一部のみをミラーリングするようにトリミングできます。
|
||||||
|
|
||||||
|
これは、例えばOculus Goの片方の目をミラーリングする場合に便利です。:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --crop 1224:1440:0:0 # オフセット位置(0,0)で1224x1440
|
||||||
|
```
|
||||||
|
|
||||||
|
もし`--max-size`も指定されている場合、トリミング後にサイズ変更が適用されます。
|
||||||
|
|
||||||
|
#### ビデオの向きをロックする
|
||||||
|
|
||||||
|
ミラーリングの向きをロックするには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --lock-video-orientation 0 # 自然な向き
|
||||||
|
scrcpy --lock-video-orientation 1 # 90°反時計回り
|
||||||
|
scrcpy --lock-video-orientation 2 # 180°
|
||||||
|
scrcpy --lock-video-orientation 3 # 90°時計回り
|
||||||
|
```
|
||||||
|
|
||||||
|
この設定は録画の向きに影響します。
|
||||||
|
|
||||||
|
[ウィンドウは独立して回転することもできます](#回転)。
|
||||||
|
|
||||||
|
|
||||||
|
#### エンコーダ
|
||||||
|
|
||||||
|
いくつかのデバイスでは一つ以上のエンコーダを持ちます。それらのいくつかは、問題やクラッシュを引き起こします。別のエンコーダを選択することが可能です:
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --encoder OMX.qcom.video.encoder.avc
|
||||||
|
```
|
||||||
|
|
||||||
|
利用可能なエンコーダをリストするために、無効なエンコーダ名を渡すことができます。エラー表示で利用可能なエンコーダを提供します。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --encoder _
|
||||||
|
```
|
||||||
|
|
||||||
|
### 録画
|
||||||
|
|
||||||
|
ミラーリング中に画面の録画をすることが可能です:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --record file.mp4
|
||||||
|
scrcpy -r file.mkv
|
||||||
|
```
|
||||||
|
|
||||||
|
録画中にミラーリングを無効にするには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --no-display --record file.mp4
|
||||||
|
scrcpy -Nr file.mkv
|
||||||
|
# Ctrl+Cで録画を中断する
|
||||||
|
```
|
||||||
|
|
||||||
|
"スキップされたフレーム"は(パフォーマンス上の理由で)リアルタイムで表示されなくても録画されます。
|
||||||
|
|
||||||
|
フレームはデバイス上で _タイムスタンプされる_ ため [パケット遅延のバリエーション] は録画されたファイルに影響を与えません。
|
||||||
|
|
||||||
|
[パケット遅延のバリエーション]: https://en.wikipedia.org/wiki/Packet_delay_variation
|
||||||
|
|
||||||
|
|
||||||
|
### 接続
|
||||||
|
|
||||||
|
#### ワイヤレス
|
||||||
|
|
||||||
|
_Scrcpy_ はデバイスとの通信に`adb`を使用します。そして`adb`はTCP/IPを介しデバイスに[接続]することができます:
|
||||||
|
|
||||||
|
1. あなたのコンピュータと同じWi-Fiに接続します。
|
||||||
|
2. あなたのIPアドレスを取得します。設定 → 端末情報 → ステータス情報、もしくは、このコマンドを実行します:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
adb shell ip route | awk '{print $9}'
|
||||||
|
```
|
||||||
|
|
||||||
|
3. あなたのデバイスでTCP/IPを介したadbを有効にします: `adb tcpip 5555`
|
||||||
|
4. あなたのデバイスの接続を外します。
|
||||||
|
5. あなたのデバイスに接続します:
|
||||||
|
`adb connect DEVICE_IP:5555` _(`DEVICE_IP`は置き換える)_
|
||||||
|
6. 通常通り`scrcpy`を実行します。
|
||||||
|
|
||||||
|
この方法はビットレートと解像度を減らすのにおそらく有用です:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --bit-rate 2M --max-size 800
|
||||||
|
scrcpy -b2M -m800 # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
[接続]: https://developer.android.com/studio/command-line/adb.html#wireless
|
||||||
|
|
||||||
|
|
||||||
|
#### マルチデバイス
|
||||||
|
|
||||||
|
もし`adb devices`でいくつかのデバイスがリストされる場合、 _シリアルナンバー_ を指定する必要があります:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --serial 0123456789abcdef
|
||||||
|
scrcpy -s 0123456789abcdef # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
デバイスがTCP/IPを介して接続されている場合:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --serial 192.168.0.1:5555
|
||||||
|
scrcpy -s 192.168.0.1:5555 # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
複数のデバイスに対して、複数の _scrcpy_ インスタンスを開始することができます。
|
||||||
|
|
||||||
|
#### デバイス接続での自動起動
|
||||||
|
|
||||||
|
[AutoAdb]を使用可能です:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
autoadb scrcpy -s '{}'
|
||||||
|
```
|
||||||
|
|
||||||
|
[AutoAdb]: https://github.com/rom1v/autoadb
|
||||||
|
|
||||||
|
#### SSHトンネル
|
||||||
|
|
||||||
|
リモートデバイスに接続するため、ローカル`adb`クライアントからリモート`adb`サーバーへ接続することが可能です(同じバージョンの _adb_ プロトコルを使用している場合):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
adb kill-server # 5037ポートのローカルadbサーバーを終了する
|
||||||
|
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
|
||||||
|
# オープンしたままにする
|
||||||
|
```
|
||||||
|
|
||||||
|
他の端末から:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
リモートポート転送の有効化を回避するためには、代わりに転送接続を強制することができます(`-R`の代わりに`-L`を使用することに注意):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
adb kill-server # 5037ポートのローカルadbサーバーを終了する
|
||||||
|
ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer
|
||||||
|
# オープンしたままにする
|
||||||
|
```
|
||||||
|
|
||||||
|
他の端末から:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --force-adb-forward
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
ワイヤレス接続と同様に、クオリティを下げると便利な場合があります:
|
||||||
|
|
||||||
|
```
|
||||||
|
scrcpy -b2M -m800 --max-fps 15
|
||||||
|
```
|
||||||
|
|
||||||
|
### ウィンドウ構成
|
||||||
|
|
||||||
|
#### タイトル
|
||||||
|
|
||||||
|
ウィンドウのタイトルはデバイスモデルが初期値です。これは変更できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --window-title 'My device'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 位置とサイズ
|
||||||
|
|
||||||
|
ウィンドウの位置とサイズの初期値を指定できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ボーダーレス
|
||||||
|
|
||||||
|
ウィンドウの装飾を無効化するには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --window-borderless
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 常に画面のトップ
|
||||||
|
|
||||||
|
scrcpyの画面を常にトップにするには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --always-on-top
|
||||||
|
```
|
||||||
|
|
||||||
|
#### フルスクリーン
|
||||||
|
|
||||||
|
アプリケーションを直接フルスクリーンで開始できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --fullscreen
|
||||||
|
scrcpy -f # 短縮版
|
||||||
|
```
|
||||||
|
|
||||||
|
フルスクリーンは、次のコマンドで動的に切り替えることができます <kbd>MOD</kbd>+<kbd>f</kbd>
|
||||||
|
|
||||||
|
|
||||||
|
#### 回転
|
||||||
|
|
||||||
|
ウィンドウは回転することができます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --rotation 1
|
||||||
|
```
|
||||||
|
|
||||||
|
設定可能な値:
|
||||||
|
- `0`: 回転なし
|
||||||
|
- `1`: 90° 反時計回り
|
||||||
|
- `2`: 180°
|
||||||
|
- `3`: 90° 時計回り
|
||||||
|
|
||||||
|
回転は次のコマンドで動的に変更することができます。 <kbd>MOD</kbd>+<kbd>←</kbd>_(左)_ 、 <kbd>MOD</kbd>+<kbd>→</kbd>_(右)_
|
||||||
|
|
||||||
|
_scrcpy_ は3つの回転を管理することに注意:
|
||||||
|
- <kbd>MOD</kbd>+<kbd>r</kbd>はデバイスに縦向きと横向きの切り替えを要求する(現在実行中のアプリで要求している向きをサポートしていない場合、拒否することがある)
|
||||||
|
- [`--lock-video-orientation`](#ビデオの向きをロックする)は、ミラーリングする向きを変更する(デバイスからPCへ送信される向き)。録画に影響します。
|
||||||
|
- `--rotation` (もしくは<kbd>MOD</kbd>+<kbd>←</kbd>/<kbd>MOD</kbd>+<kbd>→</kbd>)は、ウィンドウのコンテンツのみを回転します。これは表示にのみに影響し、録画には影響しません。
|
||||||
|
|
||||||
|
### 他のミラーリングオプション
|
||||||
|
|
||||||
|
#### Read-only リードオンリー
|
||||||
|
|
||||||
|
制御を無効にするには(デバイスと対話する全てのもの:入力キー、マウスイベント、ファイルのドラッグ&ドロップ):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --no-control
|
||||||
|
scrcpy -n
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ディスプレイ
|
||||||
|
|
||||||
|
いくつか利用可能なディスプレイがある場合、ミラーリングするディスプレイを選択できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --display 1
|
||||||
|
```
|
||||||
|
|
||||||
|
ディスプレイIDのリストは次の方法で取得できます:
|
||||||
|
|
||||||
|
```
|
||||||
|
adb shell dumpsys display # search "mDisplayId=" in the output
|
||||||
|
```
|
||||||
|
|
||||||
|
セカンダリディスプレイは、デバイスが少なくともAndroid 10の場合にコントロール可能です。(それ以外ではリードオンリーでミラーリングされます)
|
||||||
|
|
||||||
|
|
||||||
|
#### 起動状態にする
|
||||||
|
|
||||||
|
デバイス接続時、少し遅れてからデバイスのスリープを防ぐには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --stay-awake
|
||||||
|
scrcpy -w
|
||||||
|
```
|
||||||
|
|
||||||
|
scrcpyが閉じられた時、初期状態に復元されます。
|
||||||
|
|
||||||
|
#### 画面OFF
|
||||||
|
|
||||||
|
コマンドラインオプションを使用することで、ミラーリングの開始時にデバイスの画面をOFFにすることができます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --turn-screen-off
|
||||||
|
scrcpy -S
|
||||||
|
```
|
||||||
|
|
||||||
|
もしくは、<kbd>MOD</kbd>+<kbd>o</kbd>を押すことでいつでもできます。
|
||||||
|
|
||||||
|
元に戻すには、<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd>を押します。
|
||||||
|
|
||||||
|
Androidでは、`POWER`ボタンはいつでも画面を表示します。便宜上、`POWER`がscrcpyを介して(右クリックもしくは<kbd>MOD</kbd>+<kbd>p</kbd>を介して)送信される場合、(ベストエフォートベースで)少し遅れて、強制的に画面を非表示にします。ただし、物理的な`POWER`ボタンを押した場合は、画面は表示されます。
|
||||||
|
|
||||||
|
このオプションはデバイスがスリープしないようにすることにも役立ちます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --turn-screen-off --stay-awake
|
||||||
|
scrcpy -Sw
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 期限切れフレームをレンダリングする
|
||||||
|
|
||||||
|
初期状態では、待ち時間を最小限にするために、_scrcpy_ は最後にデコードされたフレームをレンダリングし、前のフレームを削除します。
|
||||||
|
|
||||||
|
全フレームのレンダリングを強制するには(待ち時間が長くなる可能性があります):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --render-expired-frames
|
||||||
|
```
|
||||||
|
|
||||||
|
#### タッチを表示
|
||||||
|
|
||||||
|
プレゼンテーションの場合(物理デバイス上で)物理的なタッチを表示すると便利な場合があります。
|
||||||
|
|
||||||
|
Androidはこの機能を _開発者オプション_ で提供します。
|
||||||
|
|
||||||
|
_Scrcpy_ は開始時にこの機能を有効にし、終了時に初期値を復元するオプションを提供します:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --show-touches
|
||||||
|
scrcpy -t
|
||||||
|
```
|
||||||
|
|
||||||
|
(デバイス上で指を使った) _物理的な_ タッチのみ表示されることに注意してください。
|
||||||
|
|
||||||
|
|
||||||
|
#### スクリーンセーバー無効
|
||||||
|
|
||||||
|
初期状態では、scrcpyはコンピュータ上でスクリーンセーバーが実行される事を妨げません。
|
||||||
|
|
||||||
|
これを無効にするには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --disable-screensaver
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 入力制御
|
||||||
|
|
||||||
|
#### デバイス画面の回転
|
||||||
|
|
||||||
|
<kbd>MOD</kbd>+<kbd>r</kbd>を押すことで、縦向きと横向きを切り替えます。
|
||||||
|
|
||||||
|
フォアグラウンドのアプリケーションが要求された向きをサポートしている場合のみ回転することに注意してください。
|
||||||
|
|
||||||
|
#### コピー-ペースト
|
||||||
|
|
||||||
|
Androidのクリップボードが変更される度に、コンピュータのクリップボードに自動的に同期されます。
|
||||||
|
|
||||||
|
<kbd>Ctrl</kbd>のショートカットは全てデバイスに転送されます。特に:
|
||||||
|
- <kbd>Ctrl</kbd>+<kbd>c</kbd> 通常はコピーします
|
||||||
|
- <kbd>Ctrl</kbd>+<kbd>x</kbd> 通常はカットします
|
||||||
|
- <kbd>Ctrl</kbd>+<kbd>v</kbd> 通常はペーストします(コンピュータとデバイスのクリップボードが同期された後)
|
||||||
|
|
||||||
|
通常は期待通りに動作します。
|
||||||
|
|
||||||
|
しかしながら、実際の動作はアクティブなアプリケーションに依存します。例えば、_Termux_ は代わりに<kbd>Ctrl</kbd>+<kbd>c</kbd>でSIGINTを送信します、そして、_K-9 Mail_ は新しいメッセージを作成します。
|
||||||
|
|
||||||
|
このようなケースでコピー、カットそしてペーストをするには(Android 7以上でのサポートのみですが):
|
||||||
|
- <kbd>MOD</kbd>+<kbd>c</kbd> `COPY`を挿入
|
||||||
|
- <kbd>MOD</kbd>+<kbd>x</kbd> `CUT`を挿入
|
||||||
|
- <kbd>MOD</kbd>+<kbd>v</kbd> `PASTE`を挿入(コンピュータとデバイスのクリップボードが同期された後)
|
||||||
|
|
||||||
|
加えて、<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd>はコンピュータのクリップボードテキストにキーイベントのシーケンスとして挿入することを許可します。これはコンポーネントがテキストのペーストを許可しない場合(例えば _Termux_)に有用ですが、非ASCIIコンテンツを壊す可能性があります。
|
||||||
|
|
||||||
|
**警告:** デバイスにコンピュータのクリップボードを(<kbd>Ctrl</kbd>+<kbd>v</kbd>または<kbd>MOD</kbd>+<kbd>v</kbd>を介して)ペーストすることは、デバイスのクリップボードにコンテンツをコピーします。結果としてどのAndoridアプリケーションもそのコンテンツを読み取ることができます。機密性の高いコンテンツ(例えばパスワードなど)をこの方法でペーストすることは避けてください。
|
||||||
|
|
||||||
|
プログラムでデバイスのクリップボードを設定した場合、一部のデバイスは期待どおりに動作しません。`--legacy-paste`オプションは、コンピュータのクリップボードテキストをキーイベントのシーケンスとして挿入するため(<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd>と同じ方法)、<kbd>Ctrl</kbd>+<kbd>v</kbd>と<kbd>MOD</kbd>+<kbd>v</kbd>の動作の変更を提供します。
|
||||||
|
|
||||||
|
#### ピンチしてズームする
|
||||||
|
|
||||||
|
"ピンチしてズームする"をシミュレートするには: <kbd>Ctrl</kbd>+_クリック&移動_
|
||||||
|
|
||||||
|
より正確にするには、左クリックボタンを押している間、<kbd>Ctrl</kbd>を押したままにします。左クリックボタンを離すまで、全てのマウスの動きは、(アプリでサポートされている場合)画面の中心を基準として、コンテンツを拡大縮小および回転します。
|
||||||
|
|
||||||
|
具体的には、scrcpyは画面の中央を反転した位置にある"バーチャルフィンガー"から追加のタッチイベントを生成します。
|
||||||
|
|
||||||
|
|
||||||
|
#### テキストインジェクション環境設定
|
||||||
|
|
||||||
|
テキストをタイプした時に生成される2種類の[イベント][textevents]があります:
|
||||||
|
- _key events_ はキーを押したときと離したことを通知します。
|
||||||
|
- _text events_ はテキストが入力されたことを通知します。
|
||||||
|
|
||||||
|
初期状態で、文字はキーイベントで挿入されるため、キーボードはゲームで期待通りに動作します(通常はWASDキー)。
|
||||||
|
|
||||||
|
しかし、これは[問題を引き起こす][prefertext]かもしれません。もしこのような問題が発生した場合は、この方法で回避できます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --prefer-text
|
||||||
|
```
|
||||||
|
|
||||||
|
(しかしこの方法はゲームのキーボードの動作を壊します)
|
||||||
|
|
||||||
|
[textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input
|
||||||
|
[prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343
|
||||||
|
|
||||||
|
|
||||||
|
#### キーの繰り返し
|
||||||
|
|
||||||
|
初期状態では、キーの押しっぱなしは繰り返しのキーイベントを生成します。これらのイベントが使われない場合でも、この方法は一部のゲームでパフォーマンスの問題を引き起す可能性があります。
|
||||||
|
|
||||||
|
繰り返しのキーイベントの転送を回避するためには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --no-key-repeat
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 右クリックと真ん中クリック
|
||||||
|
|
||||||
|
初期状態では、右クリックはバックの動作(もしくはパワーオン)を起こし、真ん中クリックではホーム画面へ戻ります。このショートカットを無効にし、代わりにデバイスへクリックを転送するには:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --forward-all-clicks
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### ファイルのドロップ
|
||||||
|
|
||||||
|
#### APKのインストール
|
||||||
|
|
||||||
|
APKをインストールするには、(`.apk`で終わる)APKファイルを _scrcpy_ の画面にドラッグ&ドロップします。
|
||||||
|
|
||||||
|
見た目のフィードバックはありません。コンソールにログが出力されます。
|
||||||
|
|
||||||
|
|
||||||
|
#### デバイスにファイルを送る
|
||||||
|
|
||||||
|
デバイスの`/sdcard/`ディレクトリにファイルを送るには、(APKではない)ファイルを _scrcpy_ の画面にドラッグ&ドロップします。
|
||||||
|
|
||||||
|
見た目のフィードバックはありません。コンソールにログが出力されます。
|
||||||
|
|
||||||
|
転送先ディレクトリを起動時に変更することができます:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scrcpy --push-target /sdcard/foo/bar/
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### 音声転送
|
||||||
|
|
||||||
|
音声は _scrcpy_ では転送されません。[sndcpy]を使用します。
|
||||||
|
|
||||||
|
[issue #14]も参照ください。
|
||||||
|
|
||||||
|
[sndcpy]: https://github.com/rom1v/sndcpy
|
||||||
|
[issue #14]: https://github.com/Genymobile/scrcpy/issues/14
|
||||||
|
|
||||||
|
|
||||||
|
## ショートカット
|
||||||
|
|
||||||
|
次のリストでは、<kbd>MOD</kbd>でショートカット変更します。初期状態では、(left)<kbd>Alt</kbd>または(left)<kbd>Super</kbd>です。
|
||||||
|
|
||||||
|
これは`--shortcut-mod`で変更することができます。可能なキーは`lctrl`、`rctrl`、`lalt`、 `ralt`、 `lsuper`そして`rsuper`です。例えば:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# RCtrlをショートカットとして使用します
|
||||||
|
scrcpy --shortcut-mod=rctrl
|
||||||
|
|
||||||
|
# ショートカットにLCtrl+LAltまたはLSuperのいずれかを使用します
|
||||||
|
scrcpy --shortcut-mod=lctrl+lalt,lsuper
|
||||||
|
```
|
||||||
|
|
||||||
|
_<kbd>[Super]</kbd>は通常<kbd>Windows</kbd>もしくは<kbd>Cmd</kbd>キーです。_
|
||||||
|
|
||||||
|
[Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button)
|
||||||
|
|
||||||
|
| アクション | ショートカット
|
||||||
|
| ------------------------------------------- |:-----------------------------
|
||||||
|
| フルスクリーンモードへの切り替え | <kbd>MOD</kbd>+<kbd>f</kbd>
|
||||||
|
| ディスプレイを左に回転 | <kbd>MOD</kbd>+<kbd>←</kbd> _(左)_
|
||||||
|
| ディスプレイを右に回転 | <kbd>MOD</kbd>+<kbd>→</kbd> _(右)_
|
||||||
|
| ウィンドウサイズを変更して1:1に変更(ピクセルパーフェクト) | <kbd>MOD</kbd>+<kbd>g</kbd>
|
||||||
|
| ウィンドウサイズを変更して黒い境界線を削除 | <kbd>MOD</kbd>+<kbd>w</kbd> \| _ダブルクリック¹_
|
||||||
|
| `HOME`をクリック | <kbd>MOD</kbd>+<kbd>h</kbd> \| _真ん中クリック_
|
||||||
|
| `BACK`をクリック | <kbd>MOD</kbd>+<kbd>b</kbd> \| _右クリック²_
|
||||||
|
| `APP_SWITCH`をクリック | <kbd>MOD</kbd>+<kbd>s</kbd>
|
||||||
|
| `MENU` (画面のアンロック)をクリック | <kbd>MOD</kbd>+<kbd>m</kbd>
|
||||||
|
| `VOLUME_UP`をクリック | <kbd>MOD</kbd>+<kbd>↑</kbd> _(上)_
|
||||||
|
| `VOLUME_DOWN`をクリック | <kbd>MOD</kbd>+<kbd>↓</kbd> _(下)_
|
||||||
|
| `POWER`をクリック | <kbd>MOD</kbd>+<kbd>p</kbd>
|
||||||
|
| 電源オン | _右クリック²_
|
||||||
|
| デバイス画面をオフにする(ミラーリングしたまま) | <kbd>MOD</kbd>+<kbd>o</kbd>
|
||||||
|
| デバイス画面をオンにする | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd>
|
||||||
|
| デバイス画面を回転する | <kbd>MOD</kbd>+<kbd>r</kbd>
|
||||||
|
| 通知パネルを展開する | <kbd>MOD</kbd>+<kbd>n</kbd>
|
||||||
|
| 通知パネルを折りたたむ | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>n</kbd>
|
||||||
|
| クリップボードへのコピー³ | <kbd>MOD</kbd>+<kbd>c</kbd>
|
||||||
|
| クリップボードへのカット³ | <kbd>MOD</kbd>+<kbd>x</kbd>
|
||||||
|
| クリップボードの同期とペースト³ | <kbd>MOD</kbd>+<kbd>v</kbd>
|
||||||
|
| コンピュータのクリップボードテキストの挿入 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd>
|
||||||
|
| FPSカウンタ有効/無効(標準入出力上) | <kbd>MOD</kbd>+<kbd>i</kbd>
|
||||||
|
| ピンチしてズームする | <kbd>Ctrl</kbd>+_クリック&移動_
|
||||||
|
|
||||||
|
_¹黒い境界線を削除するため、境界線上でダブルクリック_
|
||||||
|
_²もしスクリーンがオフの場合、右クリックでスクリーンをオンする。それ以外の場合はBackを押します._
|
||||||
|
_³Android 7以上のみ._
|
||||||
|
|
||||||
|
全ての<kbd>Ctrl</kbd>+_キー_ ショートカットはデバイスに転送されます、そのためアクティブなアプリケーションによって処理されます。
|
||||||
|
|
||||||
|
|
||||||
|
## カスタムパス
|
||||||
|
|
||||||
|
特定の _adb_ バイナリを使用する場合、そのパスを環境変数`ADB`で構成します:
|
||||||
|
|
||||||
|
ADB=/path/to/adb scrcpy
|
||||||
|
|
||||||
|
`scrcpy-server`ファイルのパスを上書きするには、`SCRCPY_SERVER_PATH`でそのパスを構成します。
|
||||||
|
|
||||||
|
[useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345
|
||||||
|
|
||||||
|
|
||||||
|
## なぜ _scrcpy_?
|
||||||
|
|
||||||
|
同僚が私に、[gnirehtet]のように発音できない名前を見つけるように要求しました。
|
||||||
|
|
||||||
|
[`strcpy`]は**str**ingをコピーします。`scrcpy`は**scr**eenをコピーします。
|
||||||
|
|
||||||
|
[gnirehtet]: https://github.com/Genymobile/gnirehtet
|
||||||
|
[`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html
|
||||||
|
|
||||||
|
|
||||||
|
## ビルド方法は?
|
||||||
|
|
||||||
|
[BUILD]を参照してください。
|
||||||
|
|
||||||
|
[BUILD]: BUILD.md
|
||||||
|
|
||||||
|
|
||||||
|
## よくある質問
|
||||||
|
|
||||||
|
[FAQ](FAQ.md)を参照してください。
|
||||||
|
|
||||||
|
|
||||||
|
## 開発者
|
||||||
|
|
||||||
|
[開発者のページ]を読んでください。
|
||||||
|
|
||||||
|
[開発者のページ]: DEVELOP.md
|
||||||
|
|
||||||
|
|
||||||
|
## ライセンス
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## 記事
|
||||||
|
|
||||||
|
- [Introducing scrcpy][article-intro]
|
||||||
|
- [Scrcpy now works wirelessly][article-tcpip]
|
||||||
|
|
||||||
|
[article-intro]: https://blog.rom1v.com/2018/03/introducing-scrcpy/
|
||||||
|
[article-tcpip]: https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/
|
||||||
@@ -68,9 +68,7 @@ Gentoo에서 ,[Ebuild] 가 가능합니다 : [`scrcpy/`][ebuild-link].
|
|||||||
|
|
||||||
윈도우 상에서, 간단하게 설치하기 위해 종속성이 있는 사전 구축된 아카이브가 제공됩니다 (`adb` 포함) :
|
윈도우 상에서, 간단하게 설치하기 위해 종속성이 있는 사전 구축된 아카이브가 제공됩니다 (`adb` 포함) :
|
||||||
해당 파일은 Readme원본 링크를 통해서 다운로드가 가능합니다.
|
해당 파일은 Readme원본 링크를 통해서 다운로드가 가능합니다.
|
||||||
- [`scrcpy-win`][direct-win]
|
- [README](README.md#windows)
|
||||||
|
|
||||||
[direct-win]: https://github.com/Genymobile/scrcpy/blob/master/README.md#windows
|
|
||||||
|
|
||||||
|
|
||||||
[어플을 직접 설치][BUILD] 할 수도 있습니다.
|
[어플을 직접 설치][BUILD] 할 수도 있습니다.
|
||||||
|
|||||||
39
README.md
39
README.md
@@ -38,6 +38,18 @@ control it using keyboard and mouse.
|
|||||||
|
|
||||||
<a href="https://repology.org/project/scrcpy/versions"><img src="https://repology.org/badge/vertical-allrepos/scrcpy.svg" alt="Packaging status" align="right"></a>
|
<a href="https://repology.org/project/scrcpy/versions"><img src="https://repology.org/badge/vertical-allrepos/scrcpy.svg" alt="Packaging status" align="right"></a>
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
- Linux: `apt install scrcpy`
|
||||||
|
- Windows: [download][direct-win64]
|
||||||
|
- macOS: `brew install scrcpy`
|
||||||
|
|
||||||
|
Build from sources: [BUILD] ([simplified process][BUILD_simple])
|
||||||
|
|
||||||
|
[BUILD]: BUILD.md
|
||||||
|
[BUILD_simple]: BUILD.md#simple
|
||||||
|
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
On Debian (_testing_ and _sid_ for now) and Ubuntu (20.04):
|
On Debian (_testing_ and _sid_ for now) and Ubuntu (20.04):
|
||||||
@@ -67,9 +79,8 @@ For Gentoo, an [Ebuild] is available: [`scrcpy/`][ebuild-link].
|
|||||||
[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild
|
[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild
|
||||||
[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy
|
[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy
|
||||||
|
|
||||||
You could also [build the app manually][BUILD] (don't worry, it's not that
|
You could also [build the app manually][BUILD] ([simplified
|
||||||
hard).
|
process][BUILD_simple]).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
@@ -116,13 +127,18 @@ brew install scrcpy
|
|||||||
You need `adb`, accessible from your `PATH`. If you don't have it yet:
|
You need `adb`, accessible from your `PATH`. If you don't have it yet:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Homebrew >= 2.6.0
|
brew install android-platform-tools
|
||||||
brew install --cask android-platform-tools
|
|
||||||
|
|
||||||
# Homebrew < 2.6.0
|
|
||||||
brew cask install android-platform-tools
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
It's also available in [MacPorts], which sets up adb for you:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo port install scrcpy
|
||||||
|
```
|
||||||
|
|
||||||
|
[MacPorts]: https://www.macports.org/
|
||||||
|
|
||||||
|
|
||||||
You can also [build the app manually][BUILD].
|
You can also [build the app manually][BUILD].
|
||||||
|
|
||||||
|
|
||||||
@@ -411,7 +427,7 @@ _(left)_ and <kbd>MOD</kbd>+<kbd>→</kbd> _(right)_.
|
|||||||
|
|
||||||
Note that _scrcpy_ manages 3 different rotations:
|
Note that _scrcpy_ manages 3 different rotations:
|
||||||
- <kbd>MOD</kbd>+<kbd>r</kbd> requests the device to switch between portrait
|
- <kbd>MOD</kbd>+<kbd>r</kbd> requests the device to switch between portrait
|
||||||
and landscape (the current running app may refuse, if it does support the
|
and landscape (the current running app may refuse, if it does not support the
|
||||||
requested orientation).
|
requested orientation).
|
||||||
- [`--lock-video-orientation`](#lock-video-orientation) changes the mirroring
|
- [`--lock-video-orientation`](#lock-video-orientation) changes the mirroring
|
||||||
orientation (the orientation of the video sent from the device to the
|
orientation (the orientation of the video sent from the device to the
|
||||||
@@ -658,7 +674,7 @@ There is no visual feedback, a log is printed to the console.
|
|||||||
The target directory can be changed on start:
|
The target directory can be changed on start:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
scrcpy --push-target /sdcard/foo/bar/
|
scrcpy --push-target=/sdcard/Download/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -754,8 +770,6 @@ A colleague challenged me to find a name as unpronounceable as [gnirehtet].
|
|||||||
|
|
||||||
See [BUILD].
|
See [BUILD].
|
||||||
|
|
||||||
[BUILD]: BUILD.md
|
|
||||||
|
|
||||||
|
|
||||||
## Common issues
|
## Common issues
|
||||||
|
|
||||||
@@ -799,6 +813,7 @@ Read the [developers page].
|
|||||||
This README is available in other languages:
|
This README is available in other languages:
|
||||||
|
|
||||||
- [Indonesian (Indonesia, `id`) - v1.16](README.id.md)
|
- [Indonesian (Indonesia, `id`) - v1.16](README.id.md)
|
||||||
|
- [日本語 (Japanese, `jp`) - v1.17](README.jp.md)
|
||||||
- [한국어 (Korean, `ko`) - v1.11](README.ko.md)
|
- [한국어 (Korean, `ko`) - v1.11](README.ko.md)
|
||||||
- [português brasileiro (Brazilian Portuguese, `pt-BR`) - v1.17](README.pt-br.md)
|
- [português brasileiro (Brazilian Portuguese, `pt-BR`) - v1.17](README.pt-br.md)
|
||||||
- [简体中文 (Simplified Chinese, `zh-Hans`) - v1.17](README.zh-Hans.md)
|
- [简体中文 (Simplified Chinese, `zh-Hans`) - v1.17](README.zh-Hans.md)
|
||||||
|
|||||||
@@ -77,10 +77,7 @@ difícil).
|
|||||||
Para Windows, por simplicidade, um arquivo pré-compilado com todas as dependências
|
Para Windows, por simplicidade, um arquivo pré-compilado com todas as dependências
|
||||||
(incluindo `adb`) está disponível:
|
(incluindo `adb`) está disponível:
|
||||||
|
|
||||||
- [`scrcpy-win64-v1.17.zip`][direct-win64]
|
- [README](README.md#windows)
|
||||||
_(SHA-256: 8b9e57993c707367ed10ebfe0e1ef563c7a29d9af4a355cd8b6a52a317c73eea)_
|
|
||||||
|
|
||||||
[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-win64-v1.17.zip
|
|
||||||
|
|
||||||
Também está disponível em [Chocolatey]:
|
Também está disponível em [Chocolatey]:
|
||||||
|
|
||||||
|
|||||||
@@ -78,10 +78,7 @@ apt install scrcpy
|
|||||||
|
|
||||||
在 Windows 上,简便起见,我们提供包含了所有依赖 (包括 `adb`) 的预编译包。
|
在 Windows 上,简便起见,我们提供包含了所有依赖 (包括 `adb`) 的预编译包。
|
||||||
|
|
||||||
- [`scrcpy-win64-v1.17.zip`][direct-win64]
|
- [README](README.md#windows)
|
||||||
_(SHA-256: 8b9e57993c707367ed10ebfe0e1ef563c7a29d9af4a355cd8b6a52a317c73eea)_
|
|
||||||
|
|
||||||
[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-win64-v1.17.zip
|
|
||||||
|
|
||||||
也可以使用 [Chocolatey]:
|
也可以使用 [Chocolatey]:
|
||||||
|
|
||||||
|
|||||||
@@ -80,10 +80,7 @@ apt install scrcpy
|
|||||||
|
|
||||||
為了保持簡單,Windows 用戶可以下載一個包含所有必需軟體 (包含 `adb`) 的壓縮包:
|
為了保持簡單,Windows 用戶可以下載一個包含所有必需軟體 (包含 `adb`) 的壓縮包:
|
||||||
|
|
||||||
- [`scrcpy-win64-v1.15.zip`][direct-win64]
|
- [README](README.md#windows)
|
||||||
_(SHA-256: dd514bb591e63ef4cd52a53c30f1153a28f59722d64690eb07bd017849edcba2)_
|
|
||||||
|
|
||||||
[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.15/scrcpy-win64-v1.15.zip
|
|
||||||
|
|
||||||
[Chocolatey] 上也可以下載:
|
[Chocolatey] 上也可以下載:
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#define _ANDROID_INPUT_H
|
#define _ANDROID_INPUT_H
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Meta key / modifer state.
|
* Meta key / modifier state.
|
||||||
*/
|
*/
|
||||||
enum android_metastate {
|
enum android_metastate {
|
||||||
/** No meta keys are pressed. */
|
/** No meta keys are pressed. */
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ scrcpy_print_usage(const char *arg0) {
|
|||||||
" Default is 0 (automatic).\n"
|
" Default is 0 (automatic).\n"
|
||||||
"\n"
|
"\n"
|
||||||
" --window-height value\n"
|
" --window-height value\n"
|
||||||
" Set the initial window width.\n"
|
" Set the initial window height.\n"
|
||||||
" Default is 0 (automatic).\n"
|
" Default is 0 (automatic).\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Shortcuts:\n"
|
"Shortcuts:\n"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ convert_keycode_action(SDL_EventType from, enum android_keyevent_action *to) {
|
|||||||
|
|
||||||
static enum android_metastate
|
static enum android_metastate
|
||||||
autocomplete_metastate(enum android_metastate metastate) {
|
autocomplete_metastate(enum android_metastate metastate) {
|
||||||
// fill dependant flags
|
// fill dependent flags
|
||||||
if (metastate & (AMETA_SHIFT_LEFT_ON | AMETA_SHIFT_RIGHT_ON)) {
|
if (metastate & (AMETA_SHIFT_LEFT_ON | AMETA_SHIFT_RIGHT_ON)) {
|
||||||
metastate |= AMETA_SHIFT_ON;
|
metastate |= AMETA_SHIFT_ON;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ size_t
|
|||||||
xstrncpy(char *dest, const char *src, size_t n);
|
xstrncpy(char *dest, const char *src, size_t n);
|
||||||
|
|
||||||
// join tokens by sep into dst
|
// join tokens by sep into dst
|
||||||
// returns the number of chars actually written (max n-1) if no trucation
|
// returns the number of chars actually written (max n-1) if no truncation
|
||||||
// occurred, or n if truncated
|
// occurred, or n if truncated
|
||||||
size_t
|
size_t
|
||||||
xstrjoin(char *dst, const char *const tokens[], char sep, size_t n);
|
xstrjoin(char *dst, const char *const tokens[], char sep, size_t n);
|
||||||
|
|||||||
21
install_release.sh
Executable file
21
install_release.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
BUILDDIR=build-auto
|
||||||
|
PREBUILT_SERVER_URL=https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-server-v1.17
|
||||||
|
PREBUILT_SERVER_SHA256=11b5ad2d1bc9b9730fb7254a78efd71a8ff46b1938ff468e47a21b653a1b6725
|
||||||
|
|
||||||
|
echo "[scrcpy] Downloading prebuilt server..."
|
||||||
|
wget "$PREBUILT_SERVER_URL" -O scrcpy-server
|
||||||
|
echo "[scrcpy] Verifying prebuilt server..."
|
||||||
|
echo "$PREBUILT_SERVER_SHA256 scrcpy-server" | sha256sum --check
|
||||||
|
|
||||||
|
echo "[scrcpy] Building client..."
|
||||||
|
rm -rf "$BUILDDIR"
|
||||||
|
meson "$BUILDDIR" --buildtype release --strip -Db_lto=true \
|
||||||
|
-Dprebuilt_server=scrcpy-server
|
||||||
|
cd "$BUILDDIR"
|
||||||
|
ninja
|
||||||
|
|
||||||
|
echo "[scrcpy] Installing (sudo)..."
|
||||||
|
sudo ninja install
|
||||||
Reference in New Issue
Block a user