scrcpy控制Android¶
scrcpy是提供了通过USB或者TCP/IP连接Android设备的应用程序,可以工作在Linux, Windows, macOS上:
- 请谅解(原生,只显示设备屏幕)
- 性能(达到30~60fps)
- 显示质量(1920x1080或更高)
- 低延迟(35~70ms)
- 快速启动(小于1s)
- 无需root设备
scrcpy要求Android设备支持API 21(Android 5.0),并确保设备激活了adb debugging
安装scrcpy¶
Linux¶
在Debian(testing和sid)和Ubuntu(20.04):
apt install scrcpy
此外也可通过 snap 包方式安装 snap包scrcpy
Arch Linux需要通过 Arch Linux AUR 安装 scrcpy
甚至可以通过 源代码编译安装scrcpy
Windows¶
可以直接下载 scrcpy-win64-v1.14.zip - 请在官网下载最新版本
或者通过 Chocolatey 安装:
choco install scrcpy choco install adb
或者通过 Scoop 安装:
scoop install scrcpy scoop install adb
运行¶
连接Android设备,然后执行:
scrcpy
默认情况下,可以通过较低的分辨率来提高信工,例如限制高宽1024:
scrcpy --max-size 1024
scrcpy -m 1024
- 修改bit率
默认bit率是8Mbps,也可以降低视频bit率,例如降低到2Mbps:
scrcpy --bit-rate 2M
scrcpy -b 2M
- 限制帧数
例如限制帧数15fps:
scrcpy --max-fps 15
上述限制帧数需要Android 10支持
截屏
scrcpy –crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
锁定视频方向:
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 --record file.mp4
scrcpy -r file.mkv
要在录屏时候禁止镜像:
scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# interrupt recording with Ctrl+C
连接¶
scrcpy使用adb和设备通讯,而adb可以通过TCP/IP和设备连接
将设备和电脑连接到相同Wi-Fi
获取设备IP地址:
Settings => About phone => Status
在设备上激活adb over TCP/IP:
adb tcpip 5555
断开设备的USB连接
通过以下命令以TCP/IP方式连接设备,注意这里DEVICE_IP需要替换成实际IP地址:
adb connect DEVICE_IP:5555
运行scrcpy,可能需要降低比特率:
scrcpy --bit-rate 2M --max-size 800 scrcpy -b2M -m800 # short version
多设备连接¶
如果adb显示多个是被,需要指定serial:
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
自动启动设备连接,需要使用 AutoAdb
autoadb scrcpy -s '{}'
SSH tunnel¶
要连接远程设备,可以通过本地 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
要避免激活远程端口转发,需要强制一个转发连接(注意使用 -L
替换 -R
):
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-forwrad
类似无线连接,可以降低图形质量提高性能:
scrcpy -b2M -m800 --max-fps 15
窗口配置¶
旋转¶
窗口可以选装:
scrcpy --rotation 1
通过以下值指定选装:
0: no rotation
1: 90 degrees counterclockwise
2: 180 degrees
3: 90 degrees clockwise
可以通过 Ctrl + ←
(左方向键) 和 Ctrl + →
(右方向键)
显示¶
如果有多个显示器,可以指定显示屏幕:
scrcpy --display 1
以下命令可以显示屏幕id:
adb shell dumpsys display # search "mDisplayId=" in the output
关闭屏幕¶
可以在镜像屏幕时关闭设备屏幕:
scrcpy --turn-screen-off
scrcpy -S
或者通过 Ctrl + o
关闭。
也可以恢复屏幕 Ctrl + Shift + o
通常结合避免设备睡眠:
scrcpy --turn-screen-off --stay-awake
scrcpy -Sw
绘制过期帧¶
默认情况,为了降低延迟,scrcpy总是只绘制最后解码的帧,并丢弃之前的帧。为了强制绘制所有帧(会导致明显的延迟),则使用:
scrcpy --render-expired-frames
显示触摸¶
为了演示,通常显示物理触摸(在物理设备上操作)非常有用,这是Android提供的开发者选项:
scrcpy --show-touches
scrcpy -t
注意,这个只显示物理接触(即手指在设备上操作)。
输入控制¶
旋转设备屏幕: 按下
Ctrl + r
旋转复制粘贴:
Ctrl+c copies the device clipboard to the computer clipboard; Ctrl+Shift+v copies the computer clipboard to the device clipboard (and pastes if the device runs Android >= 7); Ctrl+v pastes the computer clipboard as a sequence of text events (but breaks non-ASCII characters).
文字输入¶
有两种输入文字的事件:
- key events, signaling that a key is pressed or released;
- text events, signaling that a text has been entered.