Back Original

Scrcpy v4.0

To receive a notification when a new release is available, click on Watch > Custom > Releases at the top.


scrcpy v4.0

Changes since v3.3.4:


SDL3

This release migrates from SDL2 to SDL3 to benefit from active maintenance, bug fixes, and continued upstream support. SDL3 also enables new features, such as aspect-ratio locking when resizing the window.

Thanks to the SDL maintainers for their work and for their support and fixes!

See #6216 for details.

Flex display

A virtual display can now be made flex using --flex-display (or -x), meaning it can be resized dynamically along with the client window.

Here is a demo:

scrcpy --new-display=/192 -x --start-app=org.mozilla.firefox --keep-active --no-vd-system-decorations
scrcpy-flex-display-2.mp4

Here are more examples:

# Start Android Settings in a window
scrcpy --new-display=1024x768/160 --start-app=com.android.settings --flex-display

# -x is equivalent to --flex-display
scrcpy --new-display=1024x768/160 --start-app=com.android.settings -x

# By default, the display size/dpi is 1280x960/160
scrcpy --new-display --start-app=com.android.settings --flex-display

Use --keep-active to prevent the screen from turning off (see below):

scrcpy --new-display -x --keep-active

Increase the bit rate and/or change the codec to maintain good quality even with large windows:

scrcpy --new-display -x --video-codec=h265 -b16M

See #6772 for more details.

Camera torch and zoom

The camera can be controlled dynamically:

The camera torch can also be turned on at startup by --camera-torch:

scrcpy --video-source=camera --camera-torch

The camera zoom level can be set with --camera-zoom:

scrcpy --video-source=camera --camera-zoom=1.5

The supported zoom range for each camera is given by --list-cameras (any value outside the supported range will be clamped).

Aspect ratio

Previously, the window could be freely resized, and black borders were added to maintain the content aspect ratio.

Thanks to a new API in SDL3, the window aspect ratio is now preserved while resizing, avoiding black borders.

The old behavior can be restored using --no-window-aspect-ratio-lock.

Keep active

To prevent the device from turning off due to inactivity, --keep-active periodically signals user activity to the system:

Contrary to --stay-awake and --screen-off-timeout, this does not change any global settings, and it works whether the device is plugged in or not.

Background color

The default background was pure black; it is now dark gray.

It can be changed with --background-color, which accepts hexadecimal color codes (in 3-digit or 6-digit format):

scrcpy --background-color=#234567
scrcpy --background-color=234567  # leading '#' is optional
scrcpy --background-color=#567    # equivalent to #556677

Disconnected icon

When the connection to the device is lost while mirroring, the window previously closed immediately, which could incorrectly suggest that scrcpy had crashed.

To make disconnections clearer, a disconnected icon is now displayed for 2 seconds before closing the window.

The icon replaces the screen content immediately:

scrcpy_disconnected_2_small

More details in #6662.

Meta Quest

Since a Meta Quest firmware upgrade, flickering occurred when mirroring the screen with scrcpy.

A workaround was implemented, so mirroring a Meta Quest now works again.

See the technical details in #5913 (comment).

High CPU usage with silence

A funny bug: playing silence used much more CPU than playing non-silence, during resampling of audio samples decoded from an OPUS audio stream (resampling was about 40× slower).

It turns out it was caused by denormals: the OPUS decoder did not produce exact zeros, but tiny denormal numbers, which can cause performance issues.

This was fixed directly in FFmpeg: #6715 (comment)

More shortcuts

F11 now toggles fullscreen (like MOD+f), and MOD+q now quits scrcpy.