官方信息表
| 项目 | 说明 |
|---|---|
| 项目名称 | scrcpy |
| 一句话定位 | 在电脑上通过 USB 或 TCP/IP 镜像并控制 Android 设备的开源投屏工具 |
| 所属组织 | Genymobile(由 Romain Vimont 主导维护) |
| 代码仓库 | Genymobile/scrcpy |
| 当前版本 | v5.0.1 |
| 实现语言 | C |
| 官方网站 | scrcpy 项目仓库 |
| 开源协议 | Apache License 2.0 |
| Star 数 | 153k+ |
| 支持平台 | Linux、Windows、macOS |
官方配图

项目背景
scrcpy 的名字读作 "screen copy",是 Genymobile 公司开源的一款 Android 屏幕镜像与控制工具。它的核心思路非常直接:通过 USB 或 TCP/IP 把 Android 设备的画面实时投射到电脑上,再用电脑的键盘和鼠标反向操作手机。整个过程不需要 root 权限,也不需要在手机上安装任何 APK——这一点是它和绝大多数投屏类软件最大的区别。
README 在开篇就用醒目警告强调:GitHub 上的 Genymobile/scrcpy 是项目唯一官方来源,不要从任何第三方网站下载所谓的 scrcpy 安装包,即便那些网站名字里也带 "scrcpy"。这是因为早期该项目走红后,国内出现过不少捆绑广告、甚至带恶意代码的二次打包版本,作者因此专门在 README 顶部加了这条警示。
从技术原理上看,scrcpy 在设备端通过 Android 调试桥(ADB)运行一个极小的服务端进程,利用 Android 系统自带的 MediaCodec 把屏幕编码成 H.264/H.265 视频流,再通过 USB 或 TCP 隧道传给电脑端做解码渲染。由于编码和解码都走系统硬件通路,所以它的延迟可以压到 35~70ms,启动后大约 1 秒就能出第一帧画面。README 把这种轻量、低延迟的设计总结为八个关键词:lightness(轻量)、performance(性能)、quality(画质)、low latency(低延迟)、low startup time(启动快)、non-intrusiveness(不侵入)、user benefits(无账号无广告)、freedom(自由开源)。
作者 Romain Vimont 是 Genymobile 的工程师,最早在 2018 年 3 月发布了这个项目。他在自己的博客里写过一篇《Introducing scrcpy》,讲述了最初为什么要写这个工具:当时市面上的投屏方案要么笨重、要么收费、要么要求在手机端装一堆东西,他希望有一个命令行就能跑起来、对手机零侵入的轻量替代品。项目发布后迅速在开发者社区走红,2023 年发布的 2.0 版本加入了音频转发能力,作者同样在博客里写了发布说明。
到 2026 年,scrcpy 已经迭代到 v5.0.1,Star 数超过 15 万,是 GitHub 上最热门的 Android 工具类项目之一。它被广泛用于移动应用测试、远程协助、手游投屏直播、自动化调试等场景。和商业软件相比,scrcpy 的最大优势是完全免费、无广告、不需要注册账号,而且所有源码都在 Apache 2.0 协议下开放,企业可以放心地在内网环境中批量部署。
核心特性逐条翻译
README 的 Features 一节列出了 scrcpy 的主要能力,逐条翻译如下:
音频转发(audio forwarding)。 从 Android 11(API 30)开始,scrcpy 不仅能投屏,还能把设备的音频同步转发到电脑扬声器。这意味着你可以在电脑上直接听手机视频、游戏的声音,而不用把音量开到手机上。音频流和视频流走的是同一条 ADB 隧道,不需要额外开端口。
屏幕录制(recording)。 可以在镜像的同时把设备画面录制成 MP4 文件,而不需要额外装录屏软件。录制的文件直接保存在电脑磁盘上,不占用手机存储空间。
虚拟显示(virtual display)。 可以在 Android 上创建一块和主屏幕完全独立的虚拟显示器,在里面单独启动 App,而不影响你正在用的主屏。README 给出的典型用法是 scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc,在一块新虚拟屏里单独打开 VLC。这个功能非常适合需要在手机上跑两个相互隔离的应用实例的场景。
息屏镜像(screen off mirroring)。 可以在关闭 Android 设备物理屏幕的情况下继续投屏,既省电又避免旁人看到你手机上的内容。配合电脑端操作,手机可以一直放在桌上不动。
双向复制粘贴(copy-paste)。 电脑和手机之间可以双向共享剪贴板,在电脑上复制的文字直接在手机上粘贴,反之亦然。这对经常在电脑和手机之间传递验证码、链接的人来说非常实用。
画质可调(configurable quality)。 可以限制最大分辨率、最大帧率、码率,以在低性能设备或弱网络环境下换取更流畅的体验。README 特别提示,把分辨率降到 1024 往往能明显改善帧率。
摄像头镜像(camera mirroring)。 从 Android 12 开始,scrcpy 可以直接把手机摄像头的画面采集出来投到电脑上,而不是采集屏幕。这适合做摄像头测试、直播辅助等场景。
作为电脑摄像头(V4L2,仅限 Linux)。 在 Linux 上,可以把镜像出来的画面直接暴露成 /dev/videoN 设备,让其他应用(比如会议软件)把它当成一个真实摄像头来调用。这个功能在远程协助、直播推流时特别有用。
物理键盘鼠标模拟(HID)。 scrcpy 可以把电脑的键盘、鼠标模拟成直接插在 Android 上的 USB 外设(通过 UHID),这样游戏、输入法对按键的识别会更接近原生。普通模式下,电脑键盘输入会被转换成 Android 的触摸事件;开启 HID 模式后,输入会被识别为物理按键,游戏兼容性更好。
手柄支持(gamepad)。 可以把电脑上插的游戏手柄直接映射给 Android 设备使用。对于喜欢在电脑上投屏玩手机游戏的人来说,这是一个刚需功能。
OTG 模式。 完全不依赖 USB 调试,直接以 USB 外设身份控制手机,适合那些不允许开启调试模式的设备,比如公司配发的工作机。开启 OTG 后,scrcpy 不会在手机上启动任何服务端进程,而是把电脑的键盘、鼠标信号直接通过 USB HID 协议传给手机,相当于你在电脑上插了一个 USB 键盘和鼠标。
环境要求
README 的 Prerequisites 一节给出了明确门槛:
- Android 设备系统版本至少为 Android 5.0(API 21);
- 如果需要使用音频转发功能,设备系统必须为 Android 11(API 30)或更高;
- 设备端需要在开发者选项中开启"USB 调试"(官方开启指引);
- 在部分厂商(尤其是小米)设备上,可能还需要额外开启"USB 调试(安全设置)"这一项独立开关,否则会遇到
INJECT_EVENTS权限报错,开启后需重启设备; - OTG 模式下不需要开启 USB 调试。
电脑端没有硬性的操作系统版本要求,只要能运行 scrcpy 的预编译包或自行编译即可。Windows 用户建议使用 Windows 10 及以上版本,macOS 用户建议使用 macOS 12 及以上版本以获得完整的音频转发支持。
部署步骤
方式一:直接下载官方预编译包(推荐新手)
README 在 "Get the app" 一节按操作系统给出了三个下载入口,分别对应 Linux、Windows、macOS:
- Linux 安装说明
- Windows 安装说明(README 特别提醒 Windows 用户要先看里面的 "how to run" 小节)
- macOS 安装说明
以 Windows 为例,下载解压后进入目录,在手机开启 USB 调试并通过数据线连接电脑后,双击 scrcpy.exe 或在命令行执行 scrcpy 即可看到手机画面。macOS 用户可以直接用 Homebrew 安装:brew install scrcpy。Linux 发行版大多在官方源里打包了 scrcpy,直接用包管理器安装即可,具体命令以 doc/linux.md 为准。
方式二:从源码编译
如果你的发行版源里版本太旧,或者想体验最新特性,可以从源码编译。README 在 doc/build.md 给出了完整的编译步骤,依赖主要包括 SDL2、ffmpeg 以及 Android SDK 中的 adb 工具链。编译完成后会生成 scrcpy 可执行文件,直接运行即可。编译过程中需要注意,Android SDK 版本要和 README 中声明的版本保持一致,否则可能出现协议不兼容的问题。
连接前准备
无论用哪种方式安装,首次连接前都要做三件事:
- 手机设置 → 关于手机 → 连续点击版本号,开启开发者选项;
- 进入开发者选项,打开"USB 调试";
- 用数据线连接电脑,在手机弹窗里勾选"始终允许此电脑调试"。
连接成功后,命令行执行 scrcpy 即可开始镜像。如果连接的是多台设备,需要用 --serial 参数指定设备序列号。
无线连接的完整流程如下:先用数据线把手机和电脑连在一起,执行 adb tcpip 5555,然后拔掉数据线,执行 adb connect <手机IP>:5555,最后运行 scrcpy --serial=<手机IP>:5555。这种方式下,画面延迟会比 USB 略高,但省去了数据线的束缚,适合需要在客厅电视上投屏演示、或者工位不方便接线的场景。README 在 doc/tunnels.md 里还介绍了通过 SSH 隧道、端口转发等方式跨网络访问手机的高级用法。
使用方法
README 的 Usage examples 一节给出了几条最常用的命令,原样摘录并解释如下:
基础投屏。 默认不带参数直接运行即可:
scrcpy
降低分辨率以提升性能。 README 提示,把分辨率降到 1024 往往能明显改善帧率:
scrcpy -m1024
用 H.265 编码、限制 1920 宽、60fps、关闭音频、用物理键盘模拟:
scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid
scrcpy --video-codec=h265 -m1920 --max-fps=60 --no-audio -K # 简写
在新虚拟屏里启动 VLC:
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc
在新虚拟屏里用 H.265、16Mbps 码率启动 VLC,并保持屏幕常亮:
scrcpy --new-display -x --keep-active --start-app=org.videolan.vlc --video-codec=h265 -b16M
录制摄像头到 MP4:
scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4
把前置摄像头作为 Linux 摄像头输出(不本地播放):
scrcpy --video-source=camera --camera-size=1920x1080 --camera-facing=front --v4l2-sink=/dev/video2 --no-playback
OTG 模式(不需要 USB 调试):
scrcpy --otg
用手柄控制手机:
scrcpy --gamepad=uhid
scrcpy -G # 简写
README 还提醒了几个必会的快捷键:右键触发返回键、中键触发 Home 键、Alt+f 切换全屏。完整的快捷键列表见 doc/shortcuts.md。
在实际使用中,README 建议你先跑一次不带任何参数的 scrcpy 确认基础链路通畅,再根据需要叠加参数。比如投屏卡顿,先试 -m1024 降分辨率;声音不同步,检查设备系统版本是否达到 Android 11;想在电脑上玩手游,加上 --keyboard=uhid --gamepad=uhid 把输入设备模拟成物理外设。所有参数都在 README 链接出去的十几份文档里有详细说明,建议第一次用的时候按 Connection、Video、Control 的顺序读一遍。
常见问题(FAQ)
问:连接后报错 INJECT_EVENTS 权限不足怎么办? 这是小米等厂商定制 ROM 的常见问题。README 明确说明,需要在开发者选项里额外开启"USB 调试(安全设置)"这一项(它和普通的 USB 调试是两个独立开关),开启后重启手机即可。
问:必须 root 手机吗?必须在手机上装 App 吗? 都不需要。README 在开篇就强调 scrcpy 不要求 root,也不在设备上留下任何安装包,所有功能都通过 ADB 调试通道完成。
问:可以无线连接吗? 可以。README 在 doc/connection.md 里专门有一节讲 TCP/IP 无线连接,先用 USB 跑一遍 adb tcpip 5555,再拔掉数据线用 scrcpy --serial=<手机IP>:5555 即可。
问:为什么我手机没声音? 音频转发需要 Android 11 及以上系统。如果系统版本低于 Android 11,scrcpy 只能投屏不能传声音,这是系统限制,不是软件 bug。
问:可以把手机摄像头当电脑摄像头用吗? 可以,但有两个前提:设备系统为 Android 12+,并且电脑端是 Linux(通过 V4L2 把画面暴露成 /dev/videoN)。Windows 和 macOS 目前不支持 V4L2 输出。
问:官方下载地址是哪个? README 顶部红色警告专门说明,唯一官方来源是 Genymobile/scrcpy 的 Releases 页面,不要从任何第三方下载站获取安装包。
问:多台设备同时连接怎么办? 用 --serial 参数指定设备序列号即可。每台设备独立开一个 scrcpy 进程,互不干扰。序列号可以通过 adb devices 命令查看。
问:scrcpy 支持 iOS 设备吗? 不支持。README 明确说明 scrcpy 只针对 Android 系统,因为它依赖 Android 的 ADB 调试通道和 MediaCodec 硬件编码能力,iOS 没有对应的开放接口。
跳转链接
- 官方代码仓库:Genymobile/scrcpy
- Linux 安装文档:doc/linux.md
- Windows 安装文档:doc/windows.md
- macOS 安装文档:doc/macos.md
- 编译指南:doc/build.md
- 连接方式:doc/connection.md
- 音频转发:doc/audio.md
- 录制功能:doc/recording.md
- 虚拟显示:doc/virtual-display.md
- 快捷键:doc/shortcuts.md
- 官方 FAQ:FAQ.md
- 作者介绍:rom1v.com 博客
- 2.0 音频发布说明:Scrcpy 2.0 with audio