
通过 scrcpy 实现电脑控制手机
1. 了解 scrcpy
scrcpy 发音为 “screen copy”
本应用程序可以显示并控制通过 USB 或 TCP/IP 连接的安卓设备,且不需要任何 root 权限。本程序支持 GNU/Linux, Windows 和 macOS。
系统要求
安卓设备最低需要支持 API 21 (Android 5.0)。
确保设备已开启 ADB 调试。
2. 下载 scrcpy
官网链接直达: https://github.com/Genymobile/scrcpy/blob/master/doc/windows.md
or
👆点我直接下载
3. 运行 scrcpy
将手机与电脑链接然后直接双击 scrcpy.exe
or
或者执行
1 | scrcpy |
本程序支持命令行参数,查看参数列表:
1 | scrcpy --help |
4. 功能介绍
采集设置
降低分辨率
有时候,可以通过降低镜像的分辨率来提高性能。
要同时限制宽度和高度到某个值 (例如 1024):
1 | scrcpy --max-size=1024 |
另一边会被按比例缩小以保持设备的显示比例。这样,1920×1080 分辨率的设备会以 1024×576 的分辨率进行镜像。
修改码率
默认码率是 8 Mbps。改变视频码率 (例如改为 2 Mbps):
1 | scrcpy --bit-rate=2M |
限制帧率
要限制采集的帧率:
1 | scrcpy --max-fps=15 |
本功能从 Android 10 开始才被官方支持,但在一些旧版本中也能生效。
实际捕获的帧率可被打印到控制台:
1 | scrcpy --print-fps |
画面裁剪
可以对设备屏幕进行裁剪,只镜像屏幕的一部分。
例如可以只镜像 Oculus Go 的一只眼睛。
1 | scrcpy --crop=1224:1440:0:0 # 以 (0,0) 为原点的 1224x1440 像素 |
如果同时指定了 –max-size,会先进行裁剪,再进行缩放。
锁定屏幕方向
要锁定镜像画面的方向:
1 | scrcpy --lock-video-orientation # 初始(目前)方向 |
只影响录制的方向。
窗口可以独立旋转。
编码器
一些设备内置了多种编码器,但是有的编码器会导致问题或崩溃。可以手动选择其它编码器:
1 | scrcpy --encoder=OMX.qcom.video.encoder.avc |
要列出可用的编码器,可以指定一个不存在的编码器名称,错误信息中会包含所有的编码器:
1 | scrcpy --encoder=_ |
采集
屏幕录制
可以在镜像的同时录制视频:
1 | scrcpy --record=file.mp4 |
仅录制,不显示镜像:
1 | scrcpy --no-display --record=file.mp4 |
录制时会包含“被跳过的帧”,即使它们由于性能原因没有实时显示。设备会为每一帧打上 时间戳 ,所以 包时延抖动 不会影响录制的文件。
连接
TCP/IP (无线)
Scrcpy 使用 adb 与设备通信,并且 adb 支持通过 TCP/IP 连接到设备(设备必须连接与电脑相同的网络)。
自动配置
参数 –tcpip 允许自动配置连接。这里有两种方式。
对于传入的 adb 连接,如果设备(在这个例子中以 192.168.1.1 为可用地址)已经监听了一个端口(通常为 5555),运行:
1 | scrcpy --tcpip=192.168.1.1 # 默认端口是5555 |
如果 adb TCP/IP(无线)模式在某些设备上不被启用(或者你不知道IP地址),用USB连接设备,然后运行:
1 | scrcpy --tcpip # 无需其他参数 |
这将会自动寻找设备IP地址,启用TCP/IP模式,然后在启动之前连接到设备。
窗口设置
标题
窗口的标题默认为设备型号。可以通过如下命令修改:
1 | scrcpy --window-title="我的设备" |
位置和大小
您可以指定初始的窗口位置和大小:
1 | scrcpy --window-x=100 --window-y=100 --window-width=800 --window-height=600 |
无边框
禁用窗口边框:
1 | scrcpy --window-borderless |
保持窗口在最前
您可以通过如下命令保持 scrcpy 的窗口在最前面:
1 | scrcpy --always-on-top |
全屏
您可以通过如下命令直接全屏启动 scrcpy:
1 | scrcpy --fullscreen |
全屏状态可以通过 MOD+f 随时切换。
旋转
可以通过以下命令旋转窗口:
1 | scrcpy --rotation=1 |
可选的值有:
0: 无旋转
1: 逆时针旋转 90°
2: 旋转 180°
3: 顺时针旋转 90°
其他镜像设置
只读
禁用电脑对设备的控制 (任何可与设备交互的方式:如键盘输入、鼠标事件和文件拖放):
1 | scrcpy --no-control |
显示屏
如果设备有多个显示屏,可以选择要镜像的显示屏:
1 | scrcpy --display=1 |
可以通过如下命令列出所有显示屏的 id:
1 | adb shell dumpsys display # 在输出中搜索 “mDisplayId=” |
控制第二显示屏需要设备运行 Android 10 或更高版本 (否则将在只读状态下镜像)。
保持常亮
阻止设备在连接时一段时间后休眠:
1 | scrcpy --stay-awake |
scrcpy 关闭时会恢复设备原来的设置。
关闭设备屏幕
可以通过以下的命令行参数在关闭设备屏幕的状态下进行镜像:
1 | scrcpy --turn-screen-off |
还可以同时阻止设备休眠:
1 | scrcpy --turn-screen-off --stay-awake |
退出时息屏
scrcpy 退出时关闭设备屏幕:
1 | scrcpy --power-off-on-close |
当启动时开机
默认情况下,在启动时,设备已开机。
若要防止此行为,请执行以下操作:
1 | scrcpy --no-power-on |
显示触摸
在演示时,可能会需要显示 (在物理设备上的) 物理触摸点。
Android 在 开发者选项 中提供了这项功能。
Scrcpy 提供一个选项可以在启动时开启这项功能并在退出时恢复初始设置:
1 | scrcpy --show-touches |
请注意这项功能只能显示 物理 触摸 (用手指在屏幕上的触摸)。
关闭屏保
Scrcpy 默认不会阻止电脑上开启的屏幕保护。
关闭屏幕保护:
1 | scrcpy --disable-screensaver |