# ScreenStream
**Repository Path**: mazaiting/ScreenStream
## Basic Information
- **Project Name**: ScreenStream
- **Description**: Android屏幕共享工具
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-28
- **Last Updated**: 2026-07-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# ScreenStream
ScreenStream is an open-source Android application for streaming your device screen and audio. Use Local mode (MJPEG) or Global mode (WebRTC) to view the stream in a web browser, or use RTSP mode with a compatible RTSP client, server, or player.
The Google Play version supports all modes: **Global mode (WebRTC)**, **Local mode (MJPEG)**, and **RTSP mode**, with ads included.
F-Droid versions are ad-free and support only **Local mode (MJPEG)** and **RTSP mode**.
## Project support
If **ScreenStream** is useful to you, you can support its continued development using any of the options below.
**Preferred (Tether Wallet / Tether.me):** `dmkr0@tether.me`
This human-readable Tether.me address is the simplest option for Tether Wallet users.
For direct on-chain transfers:
**USD₮ / USA₮ (Ethereum / ERC-20):** `0x5bb898c72dd3dD5E7f7A0Ab12854a60374B7c1dA`
**BTC (on-chain):** `bc1q8wuv4esej0rdyn2jwkd93v7wvyep7uutzsmlh9`
## Stream modes
ScreenStream offers three stream modes: **Global mode (WebRTC)** (available only in the [Google Play Store](https://play.google.com/store/apps/details?id=info.dvkr.screenstream) version), **Local mode (MJPEG)**, and **RTSP mode**. All modes stream the Android device screen, but they function differently. Audio support is available in **Global mode (WebRTC)** and **RTSP mode** only. The modes are independent of each other and have different capabilities, restrictions, and customization options.
| Mode | Delivery | Video | Audio | Internet required | Connection model | Security |
|--------------------------|------------------------------|---------------------------|--------------------|--------------------------------|------------------------------------------------------------------------|----------------------------------------------|
| **Local mode (MJPEG)** | MJPEG over HTTP | JPEG images | No | No | Built-in HTTP server | Optional 4–6 digit PIN |
| **Global mode (WebRTC)** | WebRTC | WebRTC video | Microphone / internal audio | Yes | Public signaling service at [screenstream.io](https://screenstream.io) | End-to-end encryption + password |
| **RTSP mode** | RTSP/RTP over TCP or UDP | H.264 / H.265 | OPUS / AAC / G.711 | No (server) / Depends (client) | Built-in server (server mode) / External server (client mode) | Client mode supports RTSP auth + RTSPS (TLS) |
In **Global mode (WebRTC)** and **Local mode (MJPEG)**, the number of clients is not directly limited, but each client uses CPU resources and separate bandwidth.
ScreenStream uses Android's [MediaProjection](https://developer.android.com/reference/android/media/projection/MediaProjection) API and requires Android 7.0 or higher.
> [!WARNING]
>
> - **High traffic on mobile networks:** Streaming over 3G/4G/5G/LTE can consume a large amount of data.
>
> - **Streaming delay:** Latency depends on the selected mode, device performance, and network conditions. RTSP and WebRTC are generally better suited for lower-latency streaming, while Local mode prioritizes broad browser compatibility.
>
> - **Video playback:** Streaming quality depends on the selected mode, resolution, device encoders, available bandwidth, and CPU load.
### Local mode (MJPEG)
Local mode uses MJPEG and a built-in HTTP server. It works on a local network without internet, such as Wi-Fi, a device hotspot, USB tethering, or any other network connection between the Android device and the client's browser.
For optimal performance, a fast and stable network connection is recommended due to high traffic and low network delay requirements.
In Local mode, the app processes each frame independently, one by one, enabling additional image transformations such as cropping, resizing, rotating, and more before sending the image to the client's web browser.
The Local mode offers the following functionality:
- Uses MJPEG.
- PIN protection, no encryption.
- Video only, sent as separate images.
- Works on your local network, no internet required.
- Built-in HTTP server.
- Allows resizing by percentage or exact resolution.
- Supports Wi-Fi, mobile networks, IPv4, and IPv6.
- Clients connect in a browser using the app address.
- Highly configurable.
- Each client uses separate bandwidth.
> [!NOTE]
>
> - Some mobile carriers may block incoming connections to your device. Even if the device has a mobile network IP address, clients may not be able to connect to it directly.
>
> - Some Wi-Fi networks, particularly public or guest networks, isolate connected devices from each other. In this case, a phone and a client device on the same Wi-Fi network may still be unable to connect directly.
**Screenshots**