Update README.zh-Hans to v1.17

PR #2029 <https://github.com/Genymobile/scrcpy/pull/2029>

Reviewed-by: Win7GM
Signed-off-by: Romain Vimont <rom@rom1v.com>
This commit is contained in:
Simon Chan 2021-01-12 13:54:42 +08:00 committed by Romain Vimont
parent af516e33ee
commit ce43fad645
2 changed files with 227 additions and 218 deletions

View file

@ -801,7 +801,7 @@ This README is available in other languages:
- [Indonesian (Indonesia, `id`) - v1.16](README.id.md) - [Indonesian (Indonesia, `id`) - v1.16](README.id.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.16](README.zh-Hans.md) - [简体中文 (Simplified Chinese, `zh-Hans`) - v1.17](README.zh-Hans.md)
- [繁體中文 (Traditional Chinese, `zh-Hant`) - v1.15](README.zh-Hant.md) - [繁體中文 (Traditional Chinese, `zh-Hant`) - v1.15](README.zh-Hant.md)
Only this README file is guaranteed to be up-to-date. Only this README file is guaranteed to be up-to-date.

View file

@ -2,115 +2,111 @@ _Only the original [README](README.md) is guaranteed to be up-to-date._
只有原版的[README](README.md)会保持最新。 只有原版的[README](README.md)会保持最新。
本文根据[479d10d]进行翻译。 本文根据[ed130e05]进行翻译。
[479d10d]: https://github.com/Genymobile/scrcpy/commit/479d10dc22b70272187e0963c6ad24d754a669a2#diff-04c6e90faac2675aa89e2176d2eec7d8 [ed130e05]: https://github.com/Genymobile/scrcpy/blob/ed130e05d55615d6014d93f15cfcb92ad62b01d8/README.md
# scrcpy (v1.17)
本应用程序可以显示并控制通过 USB (或 [TCP/IP][article-tcpip]) 连接的安卓设备,且不需要任何 _root_ 权限。本程序支持 _GNU/Linux_, _Windows__macOS_
# scrcpy (v1.16)
本应用程序可以通过USB或 [TCP/IP][article-tcpip] )连接用于显示或控制安卓设备。这不需要获取 _root_ 权限。
该应用程序可以在 _GNU/Linux_, _Windows__macOS_ 环境下运行。
[article-tcpip]:https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/
![screenshot](assets/screenshot-debian-600.jpg) ![screenshot](assets/screenshot-debian-600.jpg)
它专注于: 它专注于:
- **轻量** (原生,仅显示设备屏幕) - **轻量** (原生,仅显示设备屏幕)
- **性能** 30~60fps - **性能** (30~60fps)
- **质量** 分辨率可达1920x1080或更高 - **质量** (分辨率可达 1920×1080 或更高)
- **低延迟** (35-70ms) - **低延迟** ([35~70ms][lowlatency])
- **快速启动** (数秒内即能开始显示) - **快速启动** (最快 1 秒内即可显示第一帧)
- **无侵入性** (不需要在安卓设备上安装任何程序) - **无侵入性** (不会在设备上遗留任何程序)
[lowlatency]: https://github.com/Genymobile/scrcpy/pull/646
## 使用要求 ## 系统要求
安卓设备系统版本需要在Android 5.0API 21)或以上 安卓设备最低需要支持 API 21 (Android 5.0)
确保您在设备上开启了[adb调试]。 确保设备已[开启 adb 调试][enable-adb]。
[adb调试]: https://developer.android.com/studio/command-line/adb.html#Enabling [enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling
在某些设备上,你还需要开启[额外的选项]以用鼠标和键盘进行控制。 在某些设备上,还需要开启[额外的选项][control]以使用鼠标和键盘进行控制。
[额外的选项]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323 [control]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323
## 获取scrcpy ## 获取本程序
<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>
### Linux ### Linux
Debian目前仅测试版和不稳定版_testing__sid_ 版本和Ubuntu 20.04上: Debian (目前仅支持 _testing__sid_ 分支) 和Ubuntu (20.04) 上:
``` ```
apt install scrcpy apt install scrcpy
``` ```
[Snap]包也是可用的: [`scrcpy`][snap-link]. 我们也提供 [Snap] 包: [`scrcpy`][snap-link]。
[snap-link]: https://snapstats.org/snaps/scrcpy [snap-link]: https://snapstats.org/snaps/scrcpy
[snap]: https://en.wikipedia.org/wiki/Snappy_(package_manager) [snap]: https://en.wikipedia.org/wiki/Snappy_(package_manager)
于Fedora用户我们提供[COPR]包: [`scrcpy`][copr-link]. Fedora 我们提供 [COPR] 包: [`scrcpy`][copr-link]。
[COPR]: https://fedoraproject.org/wiki/Category:Copr [COPR]: https://fedoraproject.org/wiki/Category:Copr
[copr-link]: https://copr.fedorainfracloud.org/coprs/zeno/scrcpy/ [copr-link]: https://copr.fedorainfracloud.org/coprs/zeno/scrcpy/
于Arch Linux用户我们提供[AUR]包: [`scrcpy`][aur-link]. Arch Linux 我们提供 [AUR] 包: [`scrcpy`][aur-link]。
[AUR]: https://wiki.archlinux.org/index.php/Arch_User_Repository [AUR]: https://wiki.archlinux.org/index.php/Arch_User_Repository
[aur-link]: https://aur.archlinux.org/packages/scrcpy/ [aur-link]: https://aur.archlinux.org/packages/scrcpy/
于Gentoo用户我们提供[Ebuild]包:[`scrcpy/`][ebuild-link]. Gentoo 我们提供 [Ebuild] 包:[`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
您也可以[自行编译][编译](不必担心,这并不困难)。 您也可以[自行构建][BUILD] (不必担心,这并不困难)。
### Windows ### Windows
Windows上简便起见我们准备了包含所有依赖项包括adb的程序包。 Windows 上,简便起见,我们提供包含了所有依赖 (包括 `adb`) 的预编译包。
- [`scrcpy-win64-v1.16.zip`][direct-win64] - [`scrcpy-win64-v1.17.zip`][direct-win64]
_(SHA-256: 3f30dc5db1a2f95c2b40a0f5de91ec1642d9f53799250a8c529bc882bc0918f0)_ _(SHA-256: 8b9e57993c707367ed10ebfe0e1ef563c7a29d9af4a355cd8b6a52a317c73eea)_
[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.16/scrcpy-win64-v1.16.zip [direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-win64-v1.17.zip
您也可以在[Chocolatey]下载 也可以使用 [Chocolatey]
[Chocolatey]: https://chocolatey.org/ [Chocolatey]: https://chocolatey.org/
```bash ```bash
choco install scrcpy choco install scrcpy
choco install adb # 如果你没有adb choco install adb # 如果还没有 adb
``` ```
也可以使用 [Scoop]: 或者 [Scoop]:
```bash ```bash
scoop install scrcpy scoop install scrcpy
scoop install adb # 如果你没有adb scoop install adb # 如果还没有 adb
``` ```
[Scoop]: https://scoop.sh [Scoop]: https://scoop.sh
您也可以[自行编译][编译]。 您也可以[自行构建][BUILD]。
### macOS ### macOS
您可以使用[Homebrew]下载scrcpy。直接安装就可以了 本程序已发布到 [Homebrew]。直接安装即可
[Homebrew]: https://brew.sh/ [Homebrew]: https://brew.sh/
@ -118,24 +114,28 @@ scoop install adb # 如果你没有adb
brew install scrcpy brew install scrcpy
``` ```
您需要 `adb`以使用scrcpy并且它需要可以通过 `PATH`被访问。如果您没有: 你还需要在 `PATH` 内有 `adb`。如果还没有:
```bash ```bash
# Homebrew >= 2.6.0
brew install --cask android-platform-tools
# Homebrew < 2.6.0
brew cask install android-platform-tools brew cask install android-platform-tools
``` ```
您也可以[自行编译][编译]。 您也可以[自行构建][BUILD]。
## 运行scrcpy ## 运行
用USB链接电脑和安卓设备执行: 连接安卓设备,然后执行:
```bash ```bash
scrcpy scrcpy
``` ```
支持命令行参数执行,查看参数列表: 本程序支持命令行参数,查看参数列表:
```bash ```bash
scrcpy --help scrcpy --help
@ -143,111 +143,129 @@ scrcpy --help
## 功能介绍 ## 功能介绍
### 画面设置 ### 捕获设置
#### 缩小分辨率 #### 降低分辨率
有时候,将设备屏幕镜像分辨率降低可以有效地提升性能。 有时候,可以通过降低镜像的分辨率来提高性能。
我们可以将高度和宽度都限制在一定大小内(如 1024 要同时限制宽度和高度到某个值 (例如 1024)
```bash ```bash
scrcpy --max-size 1024 scrcpy --max-size 1024
scrcpy -m 1024 # short version scrcpy -m 1024 # 简写
``` ```
较短的一边会被按比例缩小以保持设备的显示比例。 另一边会被按比例缩小以保持设备的显示比例。这样1920×1080 分辨率的设备会以 1024×576 的分辨率进行镜像。
这样1920x1080 的设备会以 1024x576 的分辨率显示。
#### 修改画面比特 #### 修改
默认的比特率是8Mbps。如果要改变画面的比特率 (比如说改成2Mbps) 默认码率是 8Mbps。要改变视频的码率 (例如改为 2Mbps)
```bash ```bash
scrcpy --bit-rate 2M scrcpy --bit-rate 2M
scrcpy -b 2M # short version scrcpy -b 2M # 简写
``` ```
#### 限制画面帧率 #### 限制帧率
画面的帧率可以通过下面的命令被限制 要限制捕获的帧率
```bash ```bash
scrcpy --max-fps 15 scrcpy --max-fps 15
``` ```
这个功能仅在Android 10和以后的版本被Android官方支持但也有可能在更早的版本可用 本功能从 Android 10 开始才被官方支持,但在一些旧版本中也能生效
#### 画面裁剪 #### 画面裁剪
设备画面可在裁切后进行镜像,以显示部分屏幕 可以对设备屏幕进行裁剪,只镜像屏幕的一部分
这项功能可以用于例如只显示Oculus Go的一只眼睛。 例如可以只镜像 Oculus Go 的一只眼睛。
```bash ```bash
scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0) scrcpy --crop 1224:1440:0:0 # 以 (0,0) 为原点的 1224x1440 像素
``` ```
如果`--max-size`在同时被指定,分辨率的改变将在画面裁切后进行 如果同时指定了 `--max-size`,会先进行裁剪,再进行缩放
#### 锁定屏幕 #### 锁定屏幕
可以使用如下命令锁定屏幕朝向: 要锁定镜像画面的方向:
```bash ```bash
scrcpy --lock-video-orientation 0 # 自然 scrcpy --lock-video-orientation 0 # 自然
scrcpy --lock-video-orientation 1 # 90° 逆时针旋转 scrcpy --lock-video-orientation 1 # 逆时针旋转 90°
scrcpy --lock-video-orientation 2 # 180° scrcpy --lock-video-orientation 2 # 180°
scrcpy --lock-video-orientation 3 # 90° 顺时针旋转 scrcpy --lock-video-orientation 3 # 顺时针旋转 90°
``` ```
该设定影响录制 只影响录制的方向
[窗口可以独立旋转](#旋转)。
#### 编码器
一些设备内置了多种编码器,但是有的编码器会导致问题或崩溃。可以手动选择其它编码器:
```bash
scrcpy --encoder OMX.qcom.video.encoder.avc
```
要列出可用的编码器,可以指定一个不存在的编码器名称,错误信息中会包含所有的编码器:
```bash
scrcpy --encoder _
```
### 屏幕录制 ### 屏幕录制
可以在屏幕镜像的同时录制视频: 可以在镜像的同时录制视频:
```bash ```bash
scrcpy --record file.mp4 scrcpy --record file.mp4
scrcpy -r file.mkv scrcpy -r file.mkv
``` ```
在不开启屏幕镜像的同时录制: 仅录制,不显示镜像
```bash ```bash
scrcpy --no-display --record file.mp4 scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv scrcpy -Nr file.mkv
# 按Ctrl+C以停止录制 # 按 Ctrl+C 停止录制
``` ```
在显示中“被跳过的帧”会被录制,虽然它们由于性能原因没有实时显示。 录制时会包含“被跳过的帧”,即使它们由于性能原因没有实时显示。设备会为每一帧打上 _时间戳_ ,所以 [包时延抖动][packet delay variation] 不会影响录制的文件。
在传输中每一帧都有 _时间戳_ ,所以 [包时延变化] 并不影响录制的文件。
[包时延变化]: https://en.wikipedia.org/wiki/Packet_delay_variation [packet delay variation]: https://en.wikipedia.org/wiki/Packet_delay_variation
### 连接方式 ### 连接
#### 无线 #### 无线
_Scrcpy_ 使用`adb`来与安卓设备连接。同时,`adb`能够通过TCP/IP[连接]到安卓设备: _Scrcpy_ 使用 `adb` 与设备通信,并且 `adb` 支持通过 TCP/IP [连接]到设备:
1. 将您的安卓设备和电脑连接至同一Wi-Fi。 1. 将设备和电脑连接至同一 Wi-Fi。
2. 获取安卓设备的IP地址在设置-关于手机-状态信息)。 2. 打开 设置 → 关于手机 → 状态信息,获取设备的 IP 地址,也可以执行以下的命令:
3. 打开安卓设备的网络adb功能`adb tcpip 5555`。 ```bash
4. 将您的设备与电脑断开连接。 adb shell ip route | awk '{print $9}'
5. 连接到您的设备:`adb connect DEVICE_IP:5555` _(用设备IP替换 `DEVICE_IP`)_. ```
6. 运行`scrcpy`。
降低比特率和分辨率可能有助于性能: 3. 启用设备的网络 adb 功能 `adb tcpip 5555`
4. 断开设备的 USB 连接。
5. 连接到您的设备:`adb connect DEVICE_IP:5555` _(将 `DEVICE_IP` 替换为设备 IP)_.
6. 正常运行 `scrcpy`
可能需要降低码率和分辨率:
```bash ```bash
scrcpy --bit-rate 2M --max-size 800 scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # short version scrcpy -b2M -m800 # 简写
``` ```
[连接]: https://developer.android.com/studio/command-line/adb.html#wireless [连接]: https://developer.android.com/studio/command-line/adb.html#wireless
@ -255,18 +273,18 @@ scrcpy -b2M -m800 # short version
#### 多设备 #### 多设备
如果多个设备在执行`adb devices`后被列出,您必须指定设备的 _序列号_ 如果 `adb devices` 列出了多个设备,您必须指定设备的 _序列号_
```bash ```bash
scrcpy --serial 0123456789abcdef scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # short version scrcpy -s 0123456789abcdef # 简写
``` ```
如果设备是通过TCP/IP方式连接到电脑的 如果设备通过 TCP/IP 连接
```bash ```bash
scrcpy --serial 192.168.0.1:5555 scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # short version scrcpy -s 192.168.0.1:5555 # 简写
``` ```
您可以同时启动多个 _scrcpy_ 实例以同时显示多个设备的画面。 您可以同时启动多个 _scrcpy_ 实例以同时显示多个设备的画面。
@ -281,38 +299,38 @@ autoadb scrcpy -s '{}'
[AutoAdb]: https://github.com/rom1v/autoadb [AutoAdb]: https://github.com/rom1v/autoadb
#### SSH 连接 #### SSH 隧道
本地的 adb 可以远程连接到另一个 adb 服务器假设两者的adb版本相同来远程连接到设备 要远程连接到设备,可以将本地的 adb 客户端连接到远程的 adb 服务端 (需要两端的 _adb_ 协议版本相同)
```bash ```bash
adb kill-server # 关闭本地5037端口上的adb服务器 adb kill-server # 关闭本地 5037 端口上的 adb 服务端
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# 保持该窗口开启 # 保持该窗口开启
``` ```
另一个终端: 另一个终端:
```bash ```bash
scrcpy scrcpy
``` ```
为了避免启动远程端口转发,你可以强制启动一个转发连接(注意`-L`和`-R`的区别 若要不使用远程端口转发,可以强制使用正向连接 (注意 `-L``-R` 的区别)
```bash ```bash
adb kill-server # kill the local adb server on 5037 adb kill-server # 关闭本地 5037 端口上的 adb 服务端
ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer
# 保持该窗口开启 # 保持该窗口开启
``` ```
另一个终端: 另一个终端:
```bash ```bash
scrcpy --force-adb-forward scrcpy --force-adb-forward
``` ```
和无线网络连接类似,下列设置可能对改善性能有帮助 类似无线网络连接,可能需要降低画面质量
``` ```
scrcpy -b2M -m800 --max-fps 15 scrcpy -b2M -m800 --max-fps 15
@ -322,7 +340,7 @@ scrcpy -b2M -m800 --max-fps 15
#### 标题 #### 标题
窗口的标题默认为设备型号。可以通过如下命令修改 窗口的标题默认为设备型号。可以通过如下命令修改:
```bash ```bash
scrcpy --window-title 'My device' scrcpy --window-title 'My device'
@ -358,14 +376,14 @@ scrcpy --always-on-top
```bash ```bash
scrcpy --fullscreen scrcpy --fullscreen
scrcpy -f # short version scrcpy -f # 简写
``` ```
全屏状态可以通过<kbd>MOD</kbd>+<kbd>f</kbd>实时改变 全屏状态可以通过 <kbd>MOD</kbd>+<kbd>f</kbd> 随时切换
#### 旋转 #### 旋转
通过如下命令,窗口可以旋转 可以通过以下命令旋转窗口
```bash ```bash
scrcpy --rotation 1 scrcpy --rotation 1
@ -373,27 +391,23 @@ scrcpy --rotation 1
可选的值有: 可选的值有:
- `0`: 无旋转 - `0`: 无旋转
- `1`: 逆时针旋转90° - `1`: 逆时针旋转 90°
- `2`: 旋转180° - `2`: 旋转 180°
- `3`: 顺时针旋转90° - `3`: 顺时针旋转 90°
这同样可以使用<kbd>MOD</kbd>+<kbd></kbd> 也可以使用 <kbd>MOD</kbd>+<kbd></kbd> _(左箭头)_<kbd>MOD</kbd>+<kbd></kbd> _(右箭头)_ 随时更改。
_(左)_ 和 <kbd>MOD</kbd>+<kbd></kbd> _(右)_ 的快捷键实时更改。
需要注意的是, _scrcpy_ 控制三个不同的朝向: 需要注意的是, _scrcpy_ 有三个不同的方向:
- <kbd>MOD</kbd>+<kbd>r</kbd> 请求设备在竖屏和横屏之间切换(如果前台应用程序不支持所请求的朝向,可能会拒绝该请求)。 - <kbd>MOD</kbd>+<kbd>r</kbd> 请求设备在竖屏和横屏之间切换 (如果前台应用程序不支持请求的朝向,可能会拒绝该请求)。
- [`--lock-video-orientation`](#锁定屏幕方向) 改变镜像的朝向 (设备传输到电脑的画面的朝向)。这会影响录制。
- `--lock-video-orientation` 改变镜像的朝向(设备镜像到电脑的画面朝向)。这会影响录制。 - `--rotation` (或 <kbd>MOD</kbd>+<kbd></kbd>/<kbd>MOD</kbd>+<kbd></kbd>) 只旋转窗口的内容。这只影响显示,不影响录制。
- `--rotation` (或<kbd>MOD</kbd>+<kbd></kbd>/<kbd>MOD</kbd>+<kbd></kbd>
只旋转窗口的画面。这只影响显示,不影响录制。
### 其他镜像设置 ### 其他镜像设置
#### 只读 #### 只读
关闭电脑对设备的控制(如键盘输入、鼠标移动和文件传输) 禁用电脑对设备的控制 (如键盘输入、鼠标事件和文件拖放)
```bash ```bash
scrcpy --no-control scrcpy --no-control
@ -402,53 +416,49 @@ scrcpy -n
#### 显示屏 #### 显示屏
如果有多个显示屏可用,您可以选择特定显示屏进行镜像 如果设备有多个显示屏,可以选择要镜像的显示屏
```bash ```bash
scrcpy --display 1 scrcpy --display 1
``` ```
您可以通过如下命令找到显示屏的id 可以通过如下命令列出所有显示屏的 id
``` ```
adb shell dumpsys display # 在回显中搜索“mDisplayId=” adb shell dumpsys display # 在输出中搜索 “mDisplayId=”
``` ```
第二显示屏可能只能在设备运行Android 10或以上的情况下被控制它可能会在电脑上显示但无法通过电脑操作 控制第二显示屏需要设备运行 Android 10 或更高版本 (否则将在只读状态下镜像)
#### 保持常亮 #### 保持常亮
防止设备在已连接的状态下休眠: 阻止设备在连接时休眠:
```bash ```bash
scrcpy --stay-awake scrcpy --stay-awake
scrcpy -w scrcpy -w
``` ```
程序关闭后,设备设置会恢复原样 程序关闭时会恢复设备原来的设置
#### 关闭设备屏幕 #### 关闭设备屏幕
在启动屏幕镜像时,可以通过如下命令关闭设备的屏幕 可以通过以下的命令行参数在关闭设备屏幕的状态下进行镜像
```bash ```bash
scrcpy --turn-screen-off scrcpy --turn-screen-off
scrcpy -S scrcpy -S
``` ```
或者在需要的时候按<kbd>MOD</kbd>+<kbd>o</kbd> 或者在任何时候按 <kbd>MOD</kbd>+<kbd>o</kbd>
要重新打开屏幕的话,需要按<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd>. 要重新打开屏幕,按下 <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd>.
在Android上,`电源`按钮始终能把屏幕打开 在Android上`电源` 按钮始终能把屏幕打开。为了方便,对于在 _scrcpy_ 中发出的 `电源` 事件 (通过鼠标右键或 <kbd>MOD</kbd>+<kbd>p</kbd>),会 (尽最大的努力) 在短暂的延迟后将屏幕关闭。设备上的 `电源` 按钮仍然能打开设备屏幕
为了方便,如果按下`电源`按钮的事件是通过 _scrcpy_ 发出的(通过点按鼠标右键或<kbd>MOD</kbd>+<kbd>p</kbd>),它会在短暂的延迟后将屏幕关闭。 还可以同时阻止设备休眠:
物理的`电源`按钮仍然能打开设备屏幕。
同时,这项功能还能被用于防止设备休眠:
```bash ```bash
scrcpy --turn-screen-off --stay-awake scrcpy --turn-screen-off --stay-awake
@ -456,11 +466,11 @@ scrcpy -Sw
``` ```
#### 渲染超时 #### 渲染过期
为了降低延迟, _scrcpy_ 默认渲染解码成功的最近一帧,并跳过前面任意帧。 默认状态下,为了降低延迟, _scrcpy_ 永远渲染解码成功的最近一帧,并跳过前面任意帧。
强制渲染所有帧(可能导致延迟变高) 强制渲染所有帧 (可能导致延迟变高)
```bash ```bash
scrcpy --render-expired-frames scrcpy --render-expired-frames
@ -468,9 +478,9 @@ scrcpy --render-expired-frames
#### 显示触摸 #### 显示触摸
展示时,有些时候可能会用到显示触摸点这项功能(在设备上显示) 演示时,可能会需要显示物理触摸点 (在物理设备上的触摸点)
Android_开发者设置_ 中提供了这项功能。 Android_开发者选项_ 中提供了这项功能。
_Scrcpy_ 提供一个选项可以在启动时开启这项功能并在退出时恢复初始设置: _Scrcpy_ 提供一个选项可以在启动时开启这项功能并在退出时恢复初始设置:
@ -479,12 +489,12 @@ scrcpy --show-touches
scrcpy -t scrcpy -t
``` ```
请注意这项功能只能显示 _物理_ 触摸(要用手在屏幕上触摸) 请注意这项功能只能显示 _物理_ 触摸 (用手指在屏幕上的触摸)
#### 关闭屏保 #### 关闭屏保
_Scrcpy_ 不会默认关闭屏幕保护。 _Scrcpy_ 默认不会阻止电脑上开启的屏幕保护。
关闭屏幕保护: 关闭屏幕保护:
@ -497,64 +507,58 @@ scrcpy --disable-screensaver
#### 旋转设备屏幕 #### 旋转设备屏幕
使用<kbd>MOD</kbd>+<kbd>r</kbd>在竖屏和横屏模式之间切换。 使用 <kbd>MOD</kbd>+<kbd>r</kbd> 在竖屏和横屏模式之间切换。
需要注意的是,只有在前台应用程序支持所要求的模式时,才会进行切换。 需要注意的是,只有在前台应用程序支持所要求的模式时,才会进行切换。
#### 复制 #### 复制
每次Android的剪贴板变化的时候都会被自动同步到电脑的剪贴板上。 每次安卓的剪贴板变化时,其内容都会被自动同步到电脑的剪贴板上。
所有的 <kbd>Ctrl</kbd> 快捷键都会被转发至设备。其中: 所有的 <kbd>Ctrl</kbd> 快捷键都会被转发至设备。其中:
- <kbd>Ctrl</kbd>+<kbd>c</kbd> 复制 - <kbd>Ctrl</kbd>+<kbd>c</kbd> 通常执行复制
- <kbd>Ctrl</kbd>+<kbd>x</kbd> 剪切 - <kbd>Ctrl</kbd>+<kbd>x</kbd> 通常执行剪切
- <kbd>Ctrl</kbd>+<kbd>v</kbd> 黏贴 (在电脑到设备的剪贴板同步完成之后) - <kbd>Ctrl</kbd>+<kbd>v</kbd> 通常执行粘贴 (在电脑到设备的剪贴板同步完成之后)
这通常如您所期望的那样运作 大多数时候这些按键都会执行以上的功能
但实际的行为取决于设备上的前台程序。 但实际的行为取决于设备上的前台程序。例如_Termux_ 会在按下 <kbd>Ctrl</kbd>+<kbd>c</kbd> 时发送 SIGINT又如 _K-9 Mail_ 会新建一封邮件。
例如 _Termux_<kbd>Ctrl</kbd>+<kbd>c</kbd>被按下时发送 SIGINT
又如 _K-9 Mail_ 会新建一封新邮件。
在这种情况下剪切复制黏贴仅在Android >= 7时可用 要在这种情况下进行剪切,复制和粘贴 (仅支持 Android >= 7)
- <kbd>MOD</kbd>+<kbd>c</kbd> 注入 `COPY`(复制) - <kbd>MOD</kbd>+<kbd>c</kbd> 注入 `COPY` (复制)
- <kbd>MOD</kbd>+<kbd>x</kbd> 注入 `CUT`(剪切) - <kbd>MOD</kbd>+<kbd>x</kbd> 注入 `CUT` (剪切)
- <kbd>MOD</kbd>+<kbd>v</kbd> 注入 `PASTE`(黏贴)(在电脑到设备的剪贴板同步完成之后) - <kbd>MOD</kbd>+<kbd>v</kbd> 注入 `PASTE` (粘贴) (在电脑到设备的剪贴板同步完成之后)
另外,<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd>可以将电脑的剪贴板内容转换为一串按键事件输入到设备。 另外,<kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd> 会将电脑的剪贴板内容转换为一串按键事件输入到设备。在应用程序不接受粘贴时 (比如 _Termux_),这项功能可以派上一定的用场。不过这项功能可能会导致非 ASCII 编码的内容出现错误。
在应用程序不接受黏贴时(比如 _Termux_ ),这项功能可以排上一定的用场。
需要注意的是这项功能可能会导致非ASCII编码的内容出现错误。
**警告:** 将电脑剪贴板的内容黏贴至设备(无论是通过<kbd>Ctrl</kbd>+<kbd>v</kbd>还是<kbd>MOD</kbd>+<kbd>v</kbd> **警告:** 将电脑剪贴板的内容粘贴至设备 (无论是通过 <kbd>Ctrl</kbd>+<kbd>v</kbd> 还是 <kbd>MOD</kbd>+<kbd>v</kbd>) 都会将内容复制到设备的剪贴板。如此,任何安卓应用程序都能读取到。您应避免将敏感内容 (如密码) 通过这种方式粘贴。
都需要将内容保存至设备的剪贴板。如此,任何一个应用程序都可以读取它。
您应当避免将敏感内容通过这种方式传输(如密码)。
一些设备不支持通过程序设置剪贴板。通过 `--legacy-paste` 选项可以修改 <kbd>Ctrl</kbd>+<kbd>v</kbd><kbd>MOD</kbd>+<kbd>v</kbd> 的工作方式,使它们通过按键事件 (同 <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd>) 来注入电脑剪贴板内容。
#### 捏拉缩放 #### 双指缩放
模拟 “捏拉缩放”:<kbd>Ctrl</kbd>+_按住并移动鼠标_。 模拟“双指缩放”:<kbd>Ctrl</kbd>+_按住并移动鼠标_。
更准确的说,您需要在按住<kbd>Ctrl</kbd>的同时按住并移动鼠标。 更准确的说,在按住鼠标左键时按住 <kbd>Ctrl</kbd>。直到松开鼠标左键,所有鼠标移动将以屏幕中心为原点,缩放或旋转内容 (如果应用支持)。
在鼠标左键松开之后,光标的任何操作都会相对于屏幕的中央进行。
具体来说, _scrcpy_ 使用“虚拟手指”以在相对于屏幕中央相反的位置产生触摸事件。 实际上_scrcpy_ 会在以屏幕中心对称的位置上生成由“虚拟手指”发出的额外触摸事件。
#### 文字注入偏好 #### 文字注入偏好
打字的时候,系统会产生两种[事件][textevents] 打字的时候,系统会产生两种[事件][textevents]
- _按键事件_ ,代表一个按键被按下/松开。 - _按键事件_ ,代表一个按键被按下松开。
- _文本事件_ ,代表一个文本被输入。 - _文本事件_ ,代表一个字符被输入。
程序默认使用按键事件来输入字母。只有这样,键盘才会在游戏中正常运作尤其WASD键 程序默认使用按键事件来输入字母。只有这样,键盘才会在游戏中正常运作 (例如 WASD 键)
但这也有可能[造成问题][prefertext]。如果您遇到了这样的问题,您可以通过下列操作避免它 但这也有可能[造成一些问题][prefertext]。如果您遇到了问题,可以通过以下方式避免
```bash ```bash
scrcpy --prefer-text scrcpy --prefer-text
``` ```
(这会导致键盘在游戏中工作不正常) (这会导致键盘在游戏中工作不正常)
[textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input [textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input
[prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343 [prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343
@ -562,8 +566,7 @@ scrcpy --prefer-text
#### 按键重复 #### 按键重复
当你一直按着一个按键不放时,程序默认产生多个按键事件。 默认状态下,按住一个按键不放会生成多个重复按键事件。在某些游戏中这可能会导致性能问题。
在某些游戏中这可能会导致性能问题。
避免转发重复按键事件: 避免转发重复按键事件:
@ -572,18 +575,27 @@ scrcpy --no-key-repeat
``` ```
### 文件传输 #### 右键和中键
默认状态下,右键会触发返回键 (或电源键),中键会触发 HOME 键。要禁用这些快捷键并把所有点击转发到设备:
```bash
scrcpy --forward-all-clicks
```
### 文件拖放
#### 安装APK #### 安装APK
如果您要要安装APK请拖放APK文件文件名以`.apk`结尾)到 _scrcpy_ 窗口。 将 APK 文件 (文件名以 `.apk` 结尾) 拖放到 _scrcpy_ 窗口来安装
该操作在屏幕上不会出现任何变化,而会在控制台输出一条日志。 该操作在屏幕上不会出现任何变化,而会在控制台输出一条日志。
#### 将文件推送至设备 #### 将文件推送至设备
如果您要推送文件到设备的 `/sdcard/`请拖放文件至不能是APK文件_scrcpy_ 窗口。 要推送文件到设备的 `/sdcard/`,将 (非 APK) 文件拖放至 _scrcpy_ 窗口。
该操作没有可见的响应,只会在控制台输出日志。 该操作没有可见的响应,只会在控制台输出日志。
@ -596,7 +608,7 @@ scrcpy --push-target /sdcard/foo/bar/
### 音频转发 ### 音频转发
_scrcpy_ 不支持音频。请使用 [sndcpy]. _Scrcpy_ 不支持音频。请使用 [sndcpy].
另外请阅读 [issue #14]。 另外请阅读 [issue #14]。
@ -604,93 +616,90 @@ _scrcpy_ 不支持音频。请使用 [sndcpy].
[issue #14]: https://github.com/Genymobile/scrcpy/issues/14 [issue #14]: https://github.com/Genymobile/scrcpy/issues/14
## ## 快捷
在下列表中, <kbd>MOD</kbd>键的修饰键。 下列表中, <kbd>MOD</kbd>快捷键的修饰键。
默认是(左)<kbd>Alt</kbd>或者(左)<kbd>Super</kbd> 默认是 (左) <kbd>Alt</kbd> 或 (左) <kbd>Super</kbd>
您可以使用 `--shortcut-mod`后缀来修改它。可选的按键有`lctrl`、`rctrl`、 您可以使用 `--shortcut-mod` 来修改。可选的按键有 `lctrl`、`rctrl`、`lalt`、`ralt`、`lsuper` 和 `rsuper`。例如:
`lalt`、`ralt`、`lsuper`和`rsuper`。如下例:
```bash ```bash
# 使用右侧的Ctrl # 使用右 Ctrl
scrcpy --shortcut-mod=rctrl scrcpy --shortcut-mod=rctrl
# 使用左侧的Ctrl键、Alt键或Super # 使用左 Ctrl 键 + 左 Alt 键,或 Super
scrcpy --shortcut-mod=lctrl+lalt,lsuper scrcpy --shortcut-mod=lctrl+lalt,lsuper
``` ```
_一般来说,<kbd>[Super]</kbd>就是<kbd>Windows</kbd>或者<kbd>Cmd</kbd>。_ _<kbd>[Super]</kbd> 键通常是指 <kbd>Windows</kbd><kbd>Cmd</kbd>。_
[Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button) [Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button)
| 操作 | 快捷键 | 操作 | 快捷键 |
| ------------------------------------------- |:----------------------------- | --------------------------------- | :------------------------------------------- |
| 全屏 | <kbd>MOD</kbd>+<kbd>f</kbd> | 全屏 | <kbd>MOD</kbd>+<kbd>f</kbd> |
| 向左旋转屏幕 | <kbd>MOD</kbd>+<kbd></kbd> _(左)_ | 向左旋转屏幕 | <kbd>MOD</kbd>+<kbd>←</kbd> _(左箭头)_ |
| 向右旋转屏幕 | <kbd>MOD</kbd>+<kbd></kbd> _(右)_ | 向右旋转屏幕 | <kbd>MOD</kbd>+<kbd>→</kbd> _(右箭头)_ |
| 将窗口大小重置为1:1 (像素优先) | <kbd>MOD</kbd>+<kbd>g</kbd> | 将窗口大小重置为1:1 (匹配像素) | <kbd>MOD</kbd>+<kbd>g</kbd> |
| 将窗口大小重置为消除黑边 | <kbd>MOD</kbd>+<kbd>w</kbd> \| _双击¹_ | 将窗口大小重置为消除黑边 | <kbd>MOD</kbd>+<kbd>w</kbd> \| _双击¹_ |
| 点按 `主屏幕` | <kbd>MOD</kbd>+<kbd>h</kbd> \| _点击鼠标中键_ | 点按 `主屏幕` | <kbd>MOD</kbd>+<kbd>h</kbd> \| _鼠标中键_ |
| 点按 `返回` | <kbd>MOD</kbd>+<kbd>b</kbd> \| _点击鼠标右键²_ | 点按 `返回` | <kbd>MOD</kbd>+<kbd>b</kbd> \| _鼠标右键²_ |
| 点按 `切换应用` | <kbd>MOD</kbd>+<kbd>s</kbd> | 点按 `切换应用` | <kbd>MOD</kbd>+<kbd>s</kbd> |
| 点按 `菜单` (解锁屏幕) | <kbd>MOD</kbd>+<kbd>m</kbd> | 点按 `菜单` (解锁屏幕) | <kbd>MOD</kbd>+<kbd>m</kbd> |
| 点按 `音量+` | <kbd>MOD</kbd>+<kbd></kbd> _(up)_ | 点按 `音量+` | <kbd>MOD</kbd>+<kbd></kbd> _(上箭头)_ |
| 点按 `音量-` | <kbd>MOD</kbd>+<kbd></kbd> _(down)_ | 点按 `音量-` | <kbd>MOD</kbd>+<kbd></kbd> _(下箭头)_ |
| 点按 `电源` | <kbd>MOD</kbd>+<kbd>p</kbd> | 点按 `电源` | <kbd>MOD</kbd>+<kbd>p</kbd> |
| 打开屏幕 | _点击鼠标右键²_ | 打开屏幕 | _鼠标右键²_ |
| 关闭设备屏幕(但继续在电脑上显示) | <kbd>MOD</kbd>+<kbd>o</kbd> | 关闭设备屏幕 (但继续在电脑上显示) | <kbd>MOD</kbd>+<kbd>o</kbd> |
| 打开设备屏幕 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd> | 打开设备屏幕 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>o</kbd> |
| 旋转设备屏幕 | <kbd>MOD</kbd>+<kbd>r</kbd> | 旋转设备屏幕 | <kbd>MOD</kbd>+<kbd>r</kbd> |
| 展开通知面板 | <kbd>MOD</kbd>+<kbd>n</kbd> | 展开通知面板 | <kbd>MOD</kbd>+<kbd>n</kbd> |
| 展开快捷操作 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>n</kbd> | 收起通知面板 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>n</kbd> |
| 复制到剪贴板³ | <kbd>MOD</kbd>+<kbd>c</kbd> | 复制到剪贴板³ | <kbd>MOD</kbd>+<kbd>c</kbd> |
| 剪切到剪贴板³ | <kbd>MOD</kbd>+<kbd>x</kbd> | 剪切到剪贴板³ | <kbd>MOD</kbd>+<kbd>x</kbd> |
| 同步剪贴板并黏贴³ | <kbd>MOD</kbd>+<kbd>v</kbd> | 同步剪贴板并粘贴³ | <kbd>MOD</kbd>+<kbd>v</kbd> |
| 导入电脑剪贴板文本 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd> | 注入电脑剪贴板文本 | <kbd>MOD</kbd>+<kbd>Shift</kbd>+<kbd>v</kbd> |
| 打开/关闭FPS显示(在 stdout) | <kbd>MOD</kbd>+<kbd>i</kbd> | 打开/关闭FPS显示 (在 stdout) | <kbd>MOD</kbd>+<kbd>i</kbd> |
| 捏拉缩放 | <kbd>Ctrl</kbd>+_按并移动鼠标_ | 捏拉缩放 | <kbd>Ctrl</kbd>+_按并移动鼠标_ |
_¹双击黑色边界以关闭黑色边界_ _¹双击黑边可以去除黑边_
_²点击鼠标右键将在屏幕熄灭时点亮屏幕其余情况则视为按下 返回键 。_ _²点击鼠标右键将在屏幕熄灭时点亮屏幕其余情况则视为按下返回键 。_
_³需要安卓版本 Android >= 7。_ _³需要安卓版本 Android >= 7。_
所有的 <kbd>Ctrl</kbd>+_按键_ 的热键都是被转发到设备进行处理的,所以实际上会由当前应用程序对其做出响应 所有的 <kbd>Ctrl</kbd>+_按键_ 的快捷键都会被转发到设备,所以会由当前应用程序进行处理
## 自定义路径 ## 自定义路径
为了使用您想使用的 _adb_ ,您可以在环境变量 要使用指定的 _adb_ 二进制文件,可以设置环境变量 `ADB`
`ADB`中设置它的路径:
ADB=/path/to/adb scrcpy ADB=/path/to/adb scrcpy
如果需要覆盖`scrcpy-server`的路径,您可以在 要覆盖 `scrcpy-server` 的路径,可以设置 `SCRCPY_SERVER_PATH`
`SCRCPY_SERVER_PATH`中设置它。
[useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345 [useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345
## 为什么叫 _scrcpy_ ## 为什么叫 _scrcpy_
一个同事让我找出一个和[gnirehtet]一样难以发音的名字。 一个同事让我找出一个和 [gnirehtet] 一样难以发音的名字。
[`strcpy`] 可以复制**str**ing `scrcpy` 可以复制**scr**een。 [`strcpy`] 复制一个 **str**ing `scrcpy` 复制一个 **scr**een。
[gnirehtet]: https://github.com/Genymobile/gnirehtet [gnirehtet]: https://github.com/Genymobile/gnirehtet
[`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html [`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html
## 如何编译 ## 如何构建
请查看[编译]。 请查看[BUILD]。
[编译]: BUILD.md [BUILD]: BUILD.md
## 常见问题 ## 常见问题
请查看[FAQ](FAQ.md). 请查看[FAQ](FAQ.md)
## 开发者 ## 开发者