scrcpy v3.0
Changes since v2.7:
By default, scrcpy mirrors the device screen.
With this new feature (#5370), it is now possible to mirror a new virtual display, with a custom size:
scrcpy --new-display=1920x1080
scrcpy --new-display=1920x1080/420 # force 420 dpi
scrcpy --new-display # use the main display size and density
scrcpy --new-display=/240 # use the main display size and 240 dpi
On some devices, a launcher is available in the virtual display.
When no launcher is available, the virtual display is empty. In that case, you must start an Android app.
For example:
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc
To list the Android apps installed on the device:
scrcpy --list-apps
For convenience, you can also select an app by its name using a ?
prefix:
scrcpy --start-app=?firefox
However, retrieving app names may take some time (sometimes several seconds), so passing the package name is recommended.
Scrcpy can now transform the captured video stream before encoding by applying OpenGL filters directly on the device. This has made it possible to fix several issues and implement new features, as described below (more details in #5455).
The --crop
option was broken for devices running Android >= 14 (#4162). It has been reimplemented using OpenGL filters internally.
Its usage remains the same:
scrcpy --crop=800:600:100:100
It now also works for camera and virtual displays.
The --lock-video-orientation
option was broken for devices running Android >= 14 (#4011).
It has been replaced by a more general option --capture-orientation
, implemented using OpenGL filters:
scrcpy --capture-orientation=0
scrcpy --capture-orientation=90 # 90° clockwise
scrcpy --capture-orientation=180 # 180°
scrcpy --capture-orientation=270 # 270° clockwise
scrcpy --capture-orientation=flip0 # hflip
scrcpy --capture-orientation=flip90 # hflip + 90° clockwise
scrcpy --capture-orientation=flip180 # hflip + 180°
scrcpy --capture-orientation=flip270 # hflip + 270° clockwise
The capture orientation can be locked by using a @
prefix, so that a physical device rotation does not change the captured video orientation:
scrcpy --capture-orientation=@ # locked to the initial orientation
scrcpy --capture-orientation=@0 # locked to 0°
scrcpy --capture-orientation=@90 # locked to 90° clockwise
scrcpy --capture-orientation=@180 # locked to 180°
scrcpy --capture-orientation=@270 # locked to 270° clockwise
scrcpy --capture-orientation=@flip0 # locked to hflip
scrcpy --capture-orientation=@flip90 # locked to hflip + 90° clockwise
scrcpy --capture-orientation=@flip180 # locked to hflip + 180°
scrcpy --capture-orientation=@flip270 # locked to hflip + 270° clockwise
Now, it also works for camera (fixing #4426) and virtual displays.
A new option --angle
allows to rotate the content by a custom angle. Combined with --crop
, this is especially useful for mirroring the Meta Quest 3 (#4135, #4345, #4658).
The new virtual display feature initially could not rotate. The rotation has been implemented using OpenGL filters.
(That is what triggered the development of OpenGL filters.)
Like previously, the current app can be rotated by <kbd>MOD</kbd>+<kbd>r</kbd> (shortcuts).
The existing option --stay-awake
only keeps the device awake *while it is plugged in, meaning it typically does not work over TCP/IP.
A new option, --screen-off-timeout
, modifies the screen-off timeout setting while scrcpy is running and restores it on exit:
scrcpy --screen-off-timeout=300 # 300 seconds (5 minutes)
For convenience, static builds are now provided for Linux and macOS (#5515).
More targets might be added in the future.
This is still experimental for now, so if you encounter problems, please report them.
If you haven’t tried scrcpy in a while, here are some features introduced in the 2.x versions that you might have missed (check the release notes to each version for more details):
@scrcpy.bsky.social
@scrcpy_app
r/scrcpy
Welcome to the droidymcdroidface-iest, Lemmyest (Lemmiest), test, bestest, phoniest, pluckiest, snarkiest, and spiciest Android community on Lemmy (Do not respond)! Here you can participate in amazing discussions and events relating to all things Android.
The rules for posting and commenting, besides the rules defined here for lemmy.world, are as follows:
1. All posts must be relevant to Android devices/operating system.
2. Posts cannot be illegal or NSFW material.
3. No spam, self promotion, or upvote farming. Sources engaging in these behavior will be added to the Blacklist.
4. Non-whitelisted bots will be banned.
5. Engage respectfully: Harassment, flamebaiting, bad faith engagement, or agenda posting will result in your posts being removed. Excessive violations will result in temporary or permanent ban, depending on severity.
6. Memes are not allowed to be posts, but are allowed in the comments.
7. Posts from clickbait sources are heavily discouraged. Please de-clickbait titles if it needs to be submitted.
8. Submission statements of any length composed of your own thoughts inside the post text field are mandatory for any microblog posts, and are optional but recommended for article/image/video posts.
Community Resources:
We are Android girls*,
In our Lemmy.world.
The back is plastic,
It’s fantastic.
*Well, not just girls: people of all gender identities are welcomed here.
Our Partner Communities:
Holy lord Jesus. This is fucking awesome.
I love scrcpy. I don’t need to use it often, but when I do, I sure am glad it exists.
scrcpy v3.0
Changes since v2.7:
Just adding some formatting.
What I posted is already formatted. It’s the exact same markup as the upstream release note in fact.
Well, it’s not formatted properly in my client (Sync). I wouldn’t have gone to the effort if it was.
It’s formatted correctly on lemmy web and Github. I think the problem is on your end.
Dashes are valid list item markup in Markdown but some implementations require a paragraph above the first list item, no matter which marker. Reddit used to do that IIRC.
Sync used to be a Reddit app right? This might be a relic of that time.
Perhaps. I’m not trying to diagnose it, just making it readable for people like me.
Well, it’d be best if that wasn’t required and it simply worked with the formatting that works everywhere else.
I agree, but that’s not reality, so I added some formatting.
Genymobile is goated