
字节笔记本
2026年6月26日
scrcpy:144k stars 的开源 Android 投屏神器,零 root 实现键鼠反向控制
本文介绍 scrcpy,一个把 Android 设备画面镜像到电脑并用键鼠反向控制的开源工具。它不需要 root、不在手机装任何 App,却能做到 35~70ms 的低延迟和最高 120fps 的流畅画面,目前在 GitHub 上已收获 144k stars,是 Android 开发和测试场景下事实上的投屏标准。
项目简介
scrcpy(读作 "screen copy")由 Genymobile 公司的工程师 Romain Vimont 开发维护,采用 Apache 2.0 协议开源。它的核心思路很巧妙:利用 Android 系统自带的 adb 调试通道,在设备上启动一个轻量的 server 程序抓取屏幕帧,再通过 socket 把 H.264/H.265 视频流推送到电脑端解码渲染,同时把电脑的键鼠输入反向注入回设备。
正因为走的是系统级调试接口而非屏幕录制 API,它既能保持极低的延迟,又完全不需要 root 权限。截至最新版本 v4.0(2026 年 5 月发布),项目主要用 C(63%)和 Java(33%)编写,支持 Linux、Windows、macOS 三大桌面平台。
核心特性
- 零依赖运行 —— 不在 Android 设备上安装任何应用,通过 USB 调试或 TCP/IP 连接即用,断开后设备上不留任何痕迹
- 高性能低延迟 —— 帧率随设备可达 30
120fps,端到端延迟仅 3570ms,首屏出现时间约 1 秒 - 高清画质 —— 支持 1920×1080 及以上分辨率,可自由切换 H.264/H.265/AV1 编码
- 音频转发 —— Android 11+ 设备可同步转发系统音频,不再需要额外接线
- 双向控制 —— 键盘鼠标、物理 HID 设备、手柄全部支持反向操控设备
- 录制与摄像头 —— 可录屏为 MP4,也能直接镜像设备摄像头(Android 12+)
技术栈
- C + libav/FFmpeg —— 桌面端的核心,负责视频流的接收、解码与渲染
- SDL2 —— 跨平台窗口与输入事件处理
- Java (Android server) —— 运行在设备端的抓屏与输入注入逻辑,通过 ART 虚拟机执行
- adb —— 建立电脑与设备之间的通信通道,负责推送 server 并转发 socket
- Meson + Gradle —— 分别构建原生 C 部分和 Android Java 部分
前置要求
在开始之前,需要确认以下几点:
- 设备端:Android 5.0(API 21)及以上;音频转发需要 Android 11(API 30)及以上;摄像头镜像需要 Android 12 及以上
- 调试模式:必须在设备上开启「USB 调试」。部分品牌(尤其是小米)还需要额外开启「USB 调试(安全设置)」,否则会出现
INJECT_EVENTS权限报错导致无法用键鼠控制 - 电脑端:已安装
adb并能识别到设备(adb devices能列出)
值得一提的是,如果只用 OTG 模式(把电脑当物理键鼠用,不投屏),则完全不需要开启 USB 调试。
安装指南
macOS
# 通过 Homebrew 一键安装(最推荐)
brew install scrcpy
# 同时确保 adb 可用
brew install --cask android-platform-toolsWindows
# 推荐用 scoop
scoop install scrcpy
# 或手动下载:从 GitHub Release 页面获取 zip,解压后确保 adb.exe 在 PATH 中Linux
# Debian/Ubuntu(官方源通常版本较新)
sudo apt install scrcpy
# Arch Linux
sudo pacman -S scrcpy重要提示:项目 README 反复强调,GitHub 官方仓库是唯一的下载来源,不要从名字里带 scrcpy 的第三方网站下载,那些打包往往捆绑了广告或恶意软件。
快速开始
安装完成后,用 USB 线连上手机(已开启 USB 调试),直接运行:
scrcpy第一张画面大约 1 秒内就会出现。如果想通过 WiFi 无线连接,先 USB 连一次配置端口,再拔线:
# 1. USB 连接时,让设备在 5555 端口监听
adb tcpip 5555
# 2. 拔掉 USB,改用 IP 连接(把 192.168.1.100 换成手机 IP)
adb connect 192.168.1.100:5555
# 3. 无线投屏
scrcpy无线模式下延迟会比 USB 略高,但在同一 WiFi 下通常仍可控制在 100ms 以内,日常操控完全够用。
使用示例
scrcpy 的参数非常丰富,这里挑几个最实用的场景。
场景一:高画质低延迟投屏
想用最好的画质又压制带宽,用 H.265 编码,限制分辨率 1920、帧率 60fps,关掉音频:
# 完整写法
scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid
# 简写(-m 限尺寸,-K 启用物理键盘模拟)
scrcpy --video-codec=h265 -m1920 --max-fps=60 --no-audio -K--max-size 是最影响性能的参数。设备分辨率太高导致卡顿时,把它降到 1024 往往立竿见影。
场景二:虚拟显示器中跑应用
v3.0 起的重磅功能:在一个独立于物理屏幕的虚拟显示器里启动 App,设备本体屏幕可以继续干别的事:
# 在 1920x1080 虚拟显示器里启动 VLC
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc这对测试多窗口、大屏适配特别有用——相当于凭空给手机多接了一块显示器。
场景三:录屏与摄像头镜像
把设备摄像头当电脑摄像头用(Linux 下可注册为 V4L2 设备),或直接录制:
# 录制摄像头画面 + 麦克风到 MP4
scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4
# 摄像头注册为 Linux 摄像头设备 /dev/video2
scrcpy --video-source=camera --camera-size=1920x1080 --camera-facing=front \
--v4l2-sink=/dev/video2 --no-playback场景四:OTG 模式——纯键鼠控制
不投屏,只把电脑的键盘鼠标当成设备的物理外设。这时不需要 USB 调试,适合给键鼠坏了的手机做应急操作:
scrcpy --otg必知快捷键
投屏窗口激活时,这些快捷键极为常用,记下来效率翻倍:
| 操作 | 快捷键 |
|---|---|
| 返回 | 鼠标右键 |
| 回到主屏 | 鼠标中键 |
| 全屏切换 | Alt + f |
| 设备息屏继续投屏 | Alt + o |
| 录制 | Alt + r |
| 展开/收起通知栏 | Alt + n |
完整的快捷键列表在官方文档的 Shortcuts 页面,数量不少,但日常用熟上面这几个就够覆盖 90% 场景了。
小结
scrcpy 之所以能拿到 144k stars,不是因为它功能多花哨,而是因为它把"投屏"这件事做到了极致的克制:不装 App、不要 root、不留痕迹、延迟够低、画质够好。对 Android 开发者来说,它是日常调试和演示的标配;对普通用户来说,它是把手机搬到电脑屏幕上最干净的方案。
v4.0 这一版在虚拟显示、OTG、手柄支持上进一步打磨,如果你还在用两三年前的旧版本,强烈建议升级体验一下新特性。唯一要记住的,就是认准 GitHub 官方下载,别碰第三方打包。