Web client prototype for scrcpy.
Web client for Genymobile/scrcpy and more.
Browser must support the following technologies: * WebSockets * Media Source Extensions and h264 decoding; * WebWorkers * WebAssembly
Server: * Node.js v10+ * node-gyp (installation) *
adbexecutable must be available in the PATH environment variable
npm install npm start ```
video/mp4; codecs="avc1.42E01E"support. Creates mp4 containers from NALU, received from a device, then feeds them to MediaSource. In theory, it can use hardware acceleration.
Drag & drop an APK file to push it to the
/data/local/tmpdirectory. You can install it manually from the included xtermjs/xterm.js terminal emulator (see below).
Control your device from
adb shellin your browser.
Experimental Feature: is not built by default (see custom build)
Requires ws-qvh available in
To control device we use appium/WebDriverAgent. Functionality limited to: * Simple touch * Scroll * Home button click
Make sure you did properly setup WebDriverAgent. WebDriverAgent project is located under
INCLUDE_APPL- include code for iOS device tracking and control *
INCLUDE_GOOG- include code for Android device tracking and control *
INCLUDE_ADB_SHELL- remote shell for android devices (xtermjs/xterm.js, Tyriar/node-pty) *
INCLUDE_DEV_TOOLS- dev tools for web pages and web views on android devices *
INCLUDE_FILE_LISTING- minimalistic file management *
USE_BROADWAY- include Broadway Player *
USE_H264_CONVERTER- include Mse Player *
USE_TINY_H264- include TinyH264 Player *
USE_WEBCODECS- include WebCodecs Player *
SCRCPY_LISTENS_ON_ALL_INTERFACES- WebSocket server in
scrcpy-server.jarwill listen for connections on all available interfaces. When
true, it allows connecting to device directly from a browser. Otherwise, the connection must be established over adb.
You can specify a path to a configuration file in
Configuration file format: Configuration.d.ts.
Configuration file example: config.example.yaml.
proxy over adbfrom the interfaces list.
Be advised and keep in mind: * There is no encryption between browser and node.js server (plain HTTP). * There is no encryption between browser and WebSocket server (plain WS). * There is no authorization on any level. * The modified version of scrcpy with integrated WebSocket server is listening for connections on all network interfaces. * The modified version of scrcpy will keep running after the last client disconnected.