Scrcpy
2026/3/16大约 1 分钟
scrcpy(Screen Copy)是由 Genymobile 开发的开源工具,全称"screen copy",核心功能是**通过 ADB 将 Android 设备的屏幕实时镜像到电脑,同时支持从电脑反向控制设备(触摸、键盘输入等)。
核心特性
| 特性 | 说明 |
|---|---|
| 无需 root | 通过 ADB 的标准接口运行,普通开发者模式即可 |
| 低延迟 | 视频延迟通常在 35~70ms |
| 高性能 | 使用 H.264/H.265 硬件编码,占用资源少 |
| 跨平台 | 支持 Windows / macOS / Linux |
| 双向通信 | 屏幕镜像(设备→电脑)+ 触控回传(电脑→设备) |
工作原理
Android 设备
└── scrcpy-server.jar(Java 进程,运行在设备上)
├── 采集屏幕帧 → H.264 编码 → 写入 video socket
└── 读取 control socket → 转化为触摸/按键事件注入系统
│ ADB Local Abstract Socket
▼
PC 端 scrcpy 客户端
├── 解码 H.264 → 渲染到窗口
└── 捕获鼠标/键盘 → 发送控制命令scrcpy 采用 C/S 架构:服务端是一个推送到设备上运行的 JAR 包,客户端负责展示和控制。两端通过 ADB 建立的本地 socket 通信,不需要网络,也不需要在设备上安装 APK。
在本项目中的作用
本项目没有使用 scrcpy 的原始客户端程序,而是只复用了其服务端 JAR,自己实现了一套基于 WebSocket 的客户端,目的是将设备画面推流到浏览器前端,而非桌面窗口。
Android 设备
└── scrcpy-server.jar(不变,照常运行)
│ ADB Local Abstract Socket
▼
ScrcpyServer(Python 后端) ← 替代原始 scrcpy 客户端
│ WebSocket(二进制帧 + JSON 控制)
▼
浏览器前端
├── WebCodecs API 解码 H.264
└── 鼠标事件 → JSON → 后端 → 控制 socket → 设备