ByteNoteByteNote
scrcpy:144k stars 的开源 Android 投屏神器,零 root 实现键鼠反向控制

字节笔记本

2026年6月26日

scrcpy:144k stars 的开源 Android 投屏神器,零 root 实现键鼠反向控制

API中转
¥120

本文介绍 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 连接即用,断开后设备上不留任何痕迹
  • 高性能低延迟 —— 帧率随设备可达 30120fps,端到端延迟仅 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

bash
# 通过 Homebrew 一键安装(最推荐)
brew install scrcpy

# 同时确保 adb 可用
brew install --cask android-platform-tools

Windows

bash
# 推荐用 scoop
scoop install scrcpy

# 或手动下载:从 GitHub Release 页面获取 zip,解压后确保 adb.exe 在 PATH 中

Linux

bash
# Debian/Ubuntu(官方源通常版本较新)
sudo apt install scrcpy

# Arch Linux
sudo pacman -S scrcpy

重要提示:项目 README 反复强调,GitHub 官方仓库是唯一的下载来源,不要从名字里带 scrcpy 的第三方网站下载,那些打包往往捆绑了广告或恶意软件。

快速开始

安装完成后,用 USB 线连上手机(已开启 USB 调试),直接运行:

bash
scrcpy

第一张画面大约 1 秒内就会出现。如果想通过 WiFi 无线连接,先 USB 连一次配置端口,再拔线:

bash
# 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,关掉音频:

bash
# 完整写法
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,设备本体屏幕可以继续干别的事:

bash
# 在 1920x1080 虚拟显示器里启动 VLC
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc

这对测试多窗口、大屏适配特别有用——相当于凭空给手机多接了一块显示器。

场景三:录屏与摄像头镜像

把设备摄像头当电脑摄像头用(Linux 下可注册为 V4L2 设备),或直接录制:

bash
# 录制摄像头画面 + 麦克风到 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 调试,适合给键鼠坏了的手机做应急操作:

bash
scrcpy --otg

必知快捷键

投屏窗口激活时,这些快捷键极为常用,记下来效率翻倍:

操作快捷键
返回鼠标右键
回到主屏鼠标中键
全屏切换Alt + f
设备息屏继续投屏Alt + o
录制Alt + r
展开/收起通知栏Alt + n

完整的快捷键列表在官方文档的 Shortcuts 页面,数量不少,但日常用熟上面这几个就够覆盖 90% 场景了。

小结

scrcpy 之所以能拿到 144k stars,不是因为它功能多花哨,而是因为它把"投屏"这件事做到了极致的克制:不装 App、不要 root、不留痕迹、延迟够低、画质够好。对 Android 开发者来说,它是日常调试和演示的标配;对普通用户来说,它是把手机搬到电脑屏幕上最干净的方案。

v4.0 这一版在虚拟显示、OTG、手柄支持上进一步打磨,如果你还在用两三年前的旧版本,强烈建议升级体验一下新特性。唯一要记住的,就是认准 GitHub 官方下载,别碰第三方打包。

项目链接

分享: