本页面提供诊断和解决 scrcpy 常见问题的技术指南。本文档侧重于客户端-服务器架构的系统化故障排除方法,涵盖连接、显示和控制问题。有关使用说明,请参阅使用指南,有关构建相关问题,请参阅构建系统。
scrcpy 最常见的问题与客户端和 Android 设备之间的连接有关。下图显示了连接流程和潜在的故障点。
来源:FAQ.md9-133
显示问题通常涉及视频编码/解码或渲染方面的问题。下图显示了视频管道和潜在的故障点。
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 黑屏 | 视频解码器未初始化 | 使用 --encoder 选项尝试不同的编码器 |
| MediaCodec 异常 | 不兼容的编码器 | 使用 --encoder 指定不同的编码器(例如,--encoder=h264) |
| 低帧率 | 高分辨率伴随不足的带宽 | 使用 --max-size 降低分辨率或使用 --bit-rate 降低比特率 |
| Wayland 渲染问题 | SDL 默认使用 X11 | 设置 `SDL_VIDEODRIVER=wayland` 环境变量 |
| KWin 合成器崩溃 | Plasma 桌面兼容性问题 | 在 KWin 中禁用“阻止合成” |
输入控制问题涉及键盘和鼠标事件从客户端到 Android 设备的翻译和注入。
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 无输入工作 | 缺少权限 | 在开发者选项中启用“USB 调试(安全设置)” |
| 特殊字符无效 | 仅 ASCII 文本注入 | 将键盘模式更改为 HID,使用 --keyboard=physical |
| 鼠标点击未注册 | 输入模拟不允许 | 在开发者选项中检查“允许模拟输入”权限 |
| 键盘布局问题 | 物理键盘模拟限制 | 使用 --keyboard=physical 和适当的选项 |
在排除连接问题时,理解客户端-服务器通信路径至关重要。
随插即用 (OTG) 功能允许 scrcpy 使用 USB HID 模式而不是 ADB 来控制设备。
在 Windows 上使用 --otg、--keyboard=aoa 或 --mouse=aoa 选项时,驱动程序问题很常见。解决这些问题的步骤包括
常见错误:“找不到任何 USB 设备”通常表示驱动程序问题。
如果您遇到类似错误
adb server version (41) doesn't match this client (39); killing...
这表示使用了多个 ADB 版本。解决方案
设置 ADB 路径的示例
来源:FAQ.md94-121
如果 scrcpy abrupt stops with "Device disconnected" messages,请检查
这通常是硬件或连接问题,而不是软件问题。
| 错误消息 | 可能的原因 | 解决方案 |
|---|---|---|
| "找不到任何 ADB 设备" | ADB 未检测到设备 | 检查 USB 调试、驱动程序、线缆连接 |
| "设备未授权" | 设备上未授予权限 | 在设备上接受 USB 调试提示 |
| "多个 ADB 设备" | 已连接多个设备 | 使用 `-s`、`-d` 或 `-e` 选项指定设备 |
| "主线程 [main,5,main] 发生异常" | MediaCodec 错误 | 使用 --encoder 选项尝试不同的编码器 |
| "adb 服务器版本不匹配" | ADB 版本冲突 | 使用一致的 ADB 版本或设置 `ADB` 环境变量 |
| "'adb reverse' 失败" | TCP/IP 连接限制 | 正常的后备行为,应自动工作 |
| "找不到任何 USB 设备"(使用 OTG 时) | Windows 上的驱动程序问题 | 安装正确的 USB 驱动程序并检查设备管理器 |
来源:FAQ.md10-235
对于上面未涵盖的问题,请遵循此系统化的调试方法
来源:FAQ.md5-8
刷新此 Wiki
最后索引时间2025年4月17日(5900e9)