-
-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Description
Hi! I’m building an Android cloud-gaming platform.
Repo:
https://github.com/maddox05/android-cloud-gaming
I’ve been experimenting with an Android stack built on ReDroid (Docker) combined with scrcpy server to extract frames and handle input forwarding.
GPU passthrough in ReDroid is still a separate issue that I’m debugging, but my main question is about scrcpy latency.
Observed behavior
Even with hardware encoding enabled, I consistently see an additional ~35–70ms of latency (given the docs) introduced by scrcpy itself (measured from input → frame update). This is on top of network RTT.
For cloud gaming, this becomes a bottleneck:
- Platforms like GeForce NOW advertise ~20–30ms end-to-end RTT
- With scrcpy, I’m already adding ~35ms before transport
Questions
-
Is this latency inherent to scrcpy’s architecture?
- Is it primarily due to how frames are captured (SurfaceFlinger / MediaProjection)?
- Or due to buffering, threading, or synchronization in the server pipeline?
-
Is scrcpy optimized for low-latency streaming, or more for reliability/debugging?
My understanding is that scrcpy prioritizes stability and compatibility rather than absolute minimum latency? -
Are there known ways to reduce this latency further?
For example:- Alternative capture paths (bypassing SurfaceFlinger?)
- Different encoder / buffer settings
- Reducing frame queue depth or synchronization points
-
Would a custom “in-house” solution be required to go lower?
If targeting sub-20ms:- Do most cloud-gaming platforms avoid SurfaceFlinger entirely? (now.gg cloudmoon)
- Are they hooking closer to the GPU / HWComposer layer or using vendor-specific paths?
Context
I’m trying to understand whether:
- scrcpy can realistically be pushed closer to cloud-gaming-grade latency, or
- it’s fundamentally the wrong tool for this use case and better suited for debugging/mirroring
Any architectural insight or pointers would be hugely appreciated.
Thanks for the great work on scrcpy 🙏