scrcpy
scrcpy
This application provides display and control of Android devices connected on USB (or over TCP/IP). It does not require any root access. It works on GNU/Linux, Windows and macOS.
SCRCPY: An Android Screen Mirroring Tool
Run
Plug an Android device, and execute:
scrcpy
It accepts command-line arguments, listed by:
scrcpy --help
Features
Capture configuration
Reduce size
Sometimes, it is useful to mirror an Android device at a lower definition to increase performance.
To limit both the width and height to some value (e.g. 1024):
scrcpy --max-size 1024
scrcpy -m 1024 # short version
The other dimension is computed to that the device aspect ratio is preserved. That way, a device in 1920×1080 will be mirrored at 1024×576.
Change bit-rate
The default bit-rate is 8 Mbps. To change the video bitrate (e.g. to 2 Mbps):
scrcpy --bit-rate 2M
scrcpy -b 2M # short version
Limit frame rate
The capture frame rate can be limited:
scrcpy --max-fps 15
This is officially supported since Android 10, but may work on earlier versions.
Crop
The device screen may be cropped to mirror only part of the screen.
This is useful for example to mirror only one eye of the Oculus Go:
scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
If --max-size is also specified, resizing is applied after cropping.
Lock video orientation
To lock the orientation of the mirroring:
scrcpy --lock-video-orientation 0 # natural orientation
scrcpy --lock-video-orientation 1 # 90° counterclockwise
scrcpy --lock-video-orientation 2 # 180°
scrcpy --lock-video-orientation 3 # 90° clockwise
This affects recording orientation.
Recording
It is possible to record the screen while mirroring:
scrcpy --record file.mp4
scrcpy -r file.mkv
To disable mirroring while recording:
scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# interrupt recording with Ctrl+C
"Skipped frames" are recorded, even if they are not displayed in real time (for performance reasons). Frames are timestamped on the device, so packet delay variation does not impact the recorded file.
Connection
Wireless
Scrcpy uses adb to communicate with the device, and adb can connect to a
device over TCP/IP:
- Connect the device to the same Wi-Fi as your computer.
- Get your device IP address (in Settings → About phone → Status).
- Enable adb over TCP/IP on your device:
adb tcpip 5555. - Unplug your device.
- Connect to your device:
adb connect DEVICE_IP:5555(replaceDEVICE_IP). - Run
scrcpyas usual.
It may be useful to decrease the bit-rate and the definition:
scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800 # short version
Multi-devices
If several devices are listed in adb devices, you must specify the serial:
scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef # short version
If the device is connected over TCP/IP:
scrcpy --serial 192.168.0.1:5555
scrcpy -s 192.168.0.1:5555 # short version
You can start several instances of scrcpy for several devices.
Autostart on device connection
You could use AutoAdb:
autoadb scrcpy -s '{}'
SSH tunnel
To connect to a remote device, it is possible to connect a local adb client to
a remote adb server (provided they use the same version of the adb
protocol):
adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# keep this open
From another terminal:
scrcpy
To avoid enabling remote port forwarding, you could force a forward connection
instead (notice the -L instead of -R):
adb kill-server # kill the local adb server on 5037
ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer
# keep this open
From another terminal:
scrcpy --force-adb-forward
Like for wireless connections, it may be useful to reduce quality:
scrcpy -b2M -m800 --max-fps 15