QtScrcpy、scrcpy 与其他投屏方式怎么选
QtScrcpy 经常被当成“scrcpy 的安装包”,其实两者定位不同:一个是命令行工具,一个是带界面的桌面应用。搞清楚这层关系,选型就不会纠结。
三者是什么关系
scrcpy 是 Genymobile 开源的命令行投屏工具,用 C 写服务端、把画面编码后通过 adb 传输,以轻量和脚本友好著称。QtScrcpy 是在它基础上用 C++ / Qt / OpenGL 复刻重构的图形界面版本,补上了设备列表、启动配置、按键映射、多设备群控这些“日常使用需要但命令行不提供”的部分。
系统自带投屏与厂商助手则是另一条路线:不依赖 ADB,走 Miracast、Cast 或厂商私有协议。它们胜在零配置,输在可控性与跨品牌能力。
六个维度对比
| 维度 | QtScrcpy | scrcpy | 系统投屏 / 厂商助手 |
|---|---|---|---|
| 操作方式 | 图形界面,按钮与下拉框 | 命令行参数 | 系统菜单 |
| 多设备 | 设备列表 + 群控 | 逐台启动多个进程 | 通常一次一台 |
| 按键映射 | 内置 JSON 映射与脚本 | 不提供 | 不提供 |
| 录屏与截图 | 界面内一键操作 | 命令行参数控制 | 部分支持 |
| 无线连接 | 界面按钮完成切换 | adb 命令 + 参数 | 原生无线 |
| 跨平台 | Windows / macOS / Linux | Windows / macOS / Linux | 受系统与品牌限制 |
还有两个容易忽略的差异:音频方面,scrcpy 较新版本已支持 Android 11 以上的音频转发,而 QtScrcpy 的音频仍依赖 sndcpy(仅 Android 10+,官方标注不推荐);更新节奏方面,QtScrcpy 跟随上游但不逐版本同步,追求最新特性的人应该直接用 scrcpy。
什么时候选 scrcpy
- 需要在无图形界面的服务器或 CI 环境里跑,只能走命令行。
- 要把投屏写进脚本,按条件批量启动、录制、退出。
- 需要上游最新的音频转发、编码器或协议特性。
- 只连一台设备,不需要键位映射与群控面板。
什么时候选 QtScrcpy
- 日常在 Windows 桌面上用,希望点几下就能连上,不想记参数。
- 需要同时看多台设备,做批量安装、巡检或演示。
- 要用手游键鼠映射,或需要把常用操作固化成脚本。
- 需要界面内的录屏、截图、文件拖拽等顺手功能。
什么情况都不该用
- iOS 设备:两者都只支持 Android。
- 跨公网远程控制:它们没有账号体系与云端中继,把调试端口暴露到公网是危险做法。
- 以音频为主:需要稳定声音时,用蓝牙或系统级投屏更合适。
- 企业设备统一管控:它们不是 MDM,没有设备分组、策略下发与审计能力。
从 scrcpy 迁到 QtScrcpy
常用的命令行参数在界面里都有对应项,含义基本一致:
| scrcpy 参数 | 作用 | QtScrcpy 中的位置 |
|---|---|---|
--max-size | 限制长边分辨率 | 启动配置中的分辨率 |
--bit-rate | 设置码率 | 启动配置中的比特率 |
--max-fps | 限制帧率 | 启动配置中的帧率 |
--turn-screen-off | 启动后关闭设备屏幕 | 启动配置中的息屏选项 |
--stay-awake | 保持设备唤醒 | 启动配置中的保持唤醒 |
--record | 录制视频 | 界面内的录制按钮 |
具体名称可能随版本调整,但对应关系不变。迁移时建议先用默认参数跑通,再逐项调整,避免一次改动太多无法定位问题。
常见问题
QtScrcpy 是 scrcpy 的分支吗?
它是基于 scrcpy 的思路与协议,用 C++ / Qt / OpenGL 复刻重构的图形界面实现,并非简单套壳;两者由不同作者维护,版本号也各自独立。
用了 QtScrcpy 还需要装 scrcpy 吗?
不需要。QtScrcpy 自带所需的服务端与 adb,安装包解压即用;只有想使用上游最新特性或做脚本化时才需要单独装 scrcpy。
QtScrcpy 支持音频转发吗?
目前以画面与控制为主,音频需要借助 sndcpy,仅支持 Android 10 及以上,官方标注不推荐使用。需要声音建议走蓝牙。
两者能同时安装吗?
可以,但不要同时运行。它们各自可能带一份 adb,同时启动容易触发 adb 版本冲突,表现为设备列表异常。