scrcpy v1.19
To receive a notification on new releases, click on Watch > Releases only on the top.
scrcpy v1.19
Changes since v1.18:
- Implement (optional) buffering (#2464)
- Make --turn-screen-off work even if --no-display (#2426)
- Workaround Windows issue with non-ASCII path (#2619)
- Print correct error messages on Windows socket errors (#2624)
- Upgrade platform-tools to 31.0.3 (adb) in Windows releases (#2588)
- Upgrade SDL to 2.0.16 in Windows releases (#2589)
- Various technical fixes
Highlights
Buffering
This release brings a new feature to buffer the video stream for a given delay. This is especially useful for removing a source of stuttering for live-streaming.
To minimize latency, scrcpy was to always display a frame as soon as it is available, without waiting. This design decision is (on purpose) at the cost of jitter: the delay between frames is not preserved. Note that this does not impact recording (--record
), which writes the timestamps captured on the device.
However, some real-time use cases may benefit from compensating for jitter, by adding a small latency. For example, few tens of seconds of latency for live-streaming are not important, but jitter is noticeable. The may also improve the mirroring of a video playback.
For this purpose, scrcpy v1.19 introduces two new options:
scrcpy --display-buffer=50 # add 50 ms buffering for display
scrcpy --v4l2-buffer=500 # add 500 ms buffering for v4l2 sink
In practice, here is a graph showing the difference in smoothness with a buffer of 50ms on a wireless connection:
TL;DR: if you use scrcpy for live-streaming on Linux, use v4l2 with some buffering, and capture the V4L2 source via OBS:
scrcpy -b20M --no-display --v4l2-sink=/dev/video2 --v4l2-buffer=100
On other platforms, as a fallback, run scrcpy with some display buffer, then capture the window via OBS:
scrcpy -b20M --display-buffer=100