scrcpy性能调优指南:10个参数让安卓镜像稳定跑满120fps
【免费下载链接】scrcpyDisplay and control your Android device项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy
scrcpy是一款免费开源的安卓投屏与控制工具(Display and control your Android device),无需安装 Root 即可在电脑上镜像手机屏幕。但默认参数下,镜像常常卡顿、延迟高。本文精选 10 个核心参数,教你一步步把 scrcpy 调优到流畅满帧。
💡 快速预览 scrcpy 的镜像效果:
一、先看效果:用 --print-fps 实测帧率
调优之前,先量化现状。开启实时帧率显示,观察窗口标题栏的 FPS 数值:
scrcpy --print-fps也可随时用快捷键MOD+i切换帧率显示(MOD 默认是 Ctrl,见 doc/shortcuts.md)。
📌 注意:帧率是“可变”的——只有屏幕内容变化时才产生新帧。播放 24fps 的视频,scrcpy 最高也只能到 24fps。所以“跑满 120fps”的前提是屏幕内容足够动态。
二、10 个调优参数速查表
| # | 参数 | 作用 | 推荐值 |
|---|---|---|---|
| 1 | --max-size | 限制镜像分辨率 | 1280 |
| 2 | --video-bit-rate | 视频码率 | 低配 2M / 高配 10M |
| 3 | --max-fps | 限制采集帧率上限 | 不写(默认不限制) |
| 4 | --print-fps | 显示实时帧率 | 调试时开启 |
| 5 | --video-codec | 选择编码格式 | h264 / h265 |
| 6 | --video-encoder | 指定硬件编码器 | 见--list-encoders |
| 7 | --crop | 裁剪屏幕区域 | 只镜像目标区域 |
| 8 | --no-mipmaps | 禁用缩放缓冲贴图 | 省显存 |
| 9 | --video-buffer | 视频缓冲补偿抖动 | 30~50ms |
| 10 | --tunnel-host/--tunnel-port | 无线模式走本地回环 | 网络不稳时 |
参数定义均可在 app/src/cli.c 中查到,官方视频调优文档见 doc/video.md。
三、逐项调优详解
1️⃣ 降分辨率:--max-size(收益最大的参数)
默认 scrcpy 按设备原始分辨率镜像(如 2K/1440p 手机就是全分辨率),编码压力巨大。限制到 1280:
scrcpy --max-size=1280 # 短写:scrcpy -m 1280另一维度会按设备宽高比自动计算(1920×1080 的设备镜像为 1080×607)。弱电脑上这是第一优先级。若编码失败,scrcpy 会自动降档重试(可用--no-downsize-on-error关闭该行为)。
2️⃣ 调码率:--video-bit-rate
默认码率为 8Mbps。网络/USB 带宽不足时降码率能显著减少丢帧;追求清晰度则拉高:
scrcpy --video-bit-rate=2M # 低配设备 scrcpy --video-bit-rate=10M # 高端设备 + Wi-Fi3️⃣ 帧率上限:--max-fps
高刷屏上如果不限制采集频率,手机端 CPU 会持续满负荷编码。需要省电或稳定时主动封顶:
scrcpy --max-fps=60反之,要跑满 120fps 就不要加这个参数(默认不限制),并让手机端开启 120Hz 刷新率。
4️⃣ 选对编码:--video-codec
scrcpy --video-codec=h264 # 默认,延迟最低 scrcpy --video-codec=h265 # 质量更高、带宽更省H264 延迟低,追帧率选它;H265 同画质码率更低,追清晰度选它。
5️⃣ 指定硬件编码器:--video-encoder
部分机型默认编码器存在 bug 甚至崩溃,可列出全部编码器后手动指定:
scrcpy --list-encoders scrcpy --video-codec=h264 --video-encoder=OMX.qcom.video.encoder.avc这是解决“间歇性卡顿”的隐藏大招,服务端编码器实现位于 server/src/main/java/com/genymobile/scrcpy/video/。
6️⃣ 只镜像需要的区域:--crop
只需要镜像游戏窗口或局部内容时,裁剪可成倍降低编码量:
scrcpy --crop=1224:1440:0:0 # 在偏移(0,0)处取 1224x1440 区域7️⃣ 省显存:--no-mipmaps
禁用 OpenGL 缩放缓冲贴图,低端显卡上减少显存占用与切换窗口时的纹理重建开销:
scrcpy --no-mipmaps8️⃣ 用缓冲换平滑:--video-buffer
默认零缓冲以获得最低延迟,但网络抖动会造成画面“一顿一顿”。加少量缓冲可补偿抖动:
scrcpy --video-buffer=50 # 增加 50ms 缓冲⚖️ 权衡:缓冲越大越平滑、延迟越高。追求 120fps 低延迟就别加;无线投屏卡顿可试 30~50ms。
9️⃣ 无线模式走本地回环:--tunnel-host
无线投屏时若 Wi-Fi 到电脑链路不稳定,可让 adb 隧道走 127.0.0.1,规避 NAT 与广播干扰:
scrcpy --tunnel-host=127.0.0.1配合--tunnel-port指定端口,连接细节参考 doc/tunnels.md。
🔟 固定分辨率 + 错误自动降档
编码失败时 scrcpy 会自动尝试更低分辨率(见 doc/video.md)。想固定不降档排查问题:
scrcpy --no-downsize-on-error四、一套实测流畅的组合拳
# 低配电脑 + 高刷屏手机,稳定流畅 scrcpy --max-size=1280 -b 4M --print-fps --no-mipmaps # 高端机 + Wi-Fi,追求 120fps 满帧低延迟 scrcpy --video-codec=h264 --video-bit-rate=10M --tunnel-host=127.0.0.1五、调优心法总结
- 先测量:
--print-fps看真实帧率,别凭感觉。 - 先降分辨率:
--max-size是性价比最高的参数。 - 卡顿就换编码器:
--list-encoders+--video-encoder。 - 延迟与平滑二选一:低延迟不加
--video-buffer,抖动大再加 30~50ms。 - 120fps 前提:手机端刷新率开到 120Hz、内容足够动态、不加
--max-fps限制。
按这套流程调整后,绝大多数设备都能让 scrcpy 安卓镜像从“能看”进化到“丝滑”。
【免费下载链接】scrcpyDisplay and control your Android device项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考