cabb102a04
To control the device from the computer: - retrieve mouse and keyboard SDL events; - convert them to Android events; - serialize them; - send them on the same socket used by the video stream (but in the opposite direction); - deserialize the events on the Android side; - inject them using the InputManager. |
||
---|---|---|
app | ||
server | ||
.gitignore | ||
Makefile | ||
README.md |
ScrCpy
This project displays screens of Android devices plugged on USB in live.
Run
Runtime requirements
This projects requires FFmpeg, LibSDL2 and LibSDL2-net.
Linux
Install the packages from your package manager. For example, on Debian:
sudo apt install ffmpeg libsdl2-2.0.0 libsdl2-net-2.0.0
Windows
From MSYS2:
pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-SDL2_net
pacman -S mingw-w64-x86_64-ffmpeg
MacOS
TODO
Build
The project is divided into two parts:
- the server, running on the device (in
server/
); - the client, running on the computer (in
app/
).
The server is a raw Java project requiring Android SDK. It not an Android
project: the target file is a .jar
, and a main()
method is executed with
shell rights.
The client is a C project using SDL and FFmpeg, built with Meson/Ninja.
The root directory contains a Makefile
to build both parts.
Build requirements
Install the Android SDK, the JDK 8 (openjdk-8-jdk
), and the packages
described below.
Linux
sudo apt install make gcc openjdk-8-jdk pkg-config meson zip \
libavcodec-dev libavformat-dev libavutil-dev \
libsdl2-dev libsdl2-net-dev
Windows
Install these packages:
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-pkg-config
pacman -S mingw-w64-x86_64-meson
pacman -S zip
Java 8 is not available in MSYS2, so install it manually and make it available
from the PATH
:
export PATH="$JAVA_HOME/bin:$PATH"
Generate
Make sure your ANDROID_HOME
variable is set to your Android SDK directory:
export ANDROID_HOME=~/android/sdk
From the project root directory, execute:
make release
This will generate the application in dist/scrcpy/
.
Run
Plug a device, and execute:
./scrcpy
If several devices are listed in adb devices
, you must specify the serial:
./scrcpy 0123456789abcdef
To change the default port (useful to launch several scrcpy
simultaneously):
./scrcpy -p 1234