ScreenStream Android App
See the code
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.
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
ScreenStream offers three stream modes: Global mode (WebRTC) (available only in the Google Play Store 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 | 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 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 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:
[!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
Global mode uses WebRTC and the public ScreenStream signaling service to connect the streaming host (the app) with viewers using the ScreenStream Web Client.
Both the signaling server and web client are open-source and available in the ScreenStreamWeb repository. The hosted web client is available at screenstream.io and works with modern desktop and mobile browsers that support WebRTC.
Global mode offers the following functionality:
[!NOTE] Global mode (WebRTC) is available only in the Google Play version.
Screenshots
RTSP mode supports two sub-modes. Server mode (default) hosts the Android device as an RTSP server so compatible players can connect directly. Client mode publishes the stream to an external RTSP media server, such as MediaMTX.
For optimal performance, a fast and stable network connection is recommended due to high traffic and low network delay requirements.
[!NOTE] Client mode requires an RTSP‑capable media server (e.g., MediaMTX).
Screenshots
To contribute a translation, translate the following five files:
Keep the same key order and blank-line placement as the English source files, and preserve all formatting placeholders such as %1$s and %1$d.
Please submit a pull request. If that is not possible, you can send the translated files to the developer via e-mail at dkrivoruchko@gmail.com.
Your contribution helps make the application more accessible. Thank you for your efforts.
Developed by Dmytro Kryvoruchko. If you have any issues or ideas, feel free to contact me.
App Privacy Policy and Terms & Conditions
The MIT License (MIT)
Copyright (c) 2016 Dmytro Kryvoruchko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1,871 followers · starred Jul 2021
47 followers · starred Feb 2021
85 followers · starred Jun 2020
8 followers · starred May 2021
ScreenStream Android App
See the code
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.
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
ScreenStream offers three stream modes: Global mode (WebRTC) (available only in the Google Play Store 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 | 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 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 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:
[!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
Global mode uses WebRTC and the public ScreenStream signaling service to connect the streaming host (the app) with viewers using the ScreenStream Web Client.
Both the signaling server and web client are open-source and available in the ScreenStreamWeb repository. The hosted web client is available at screenstream.io and works with modern desktop and mobile browsers that support WebRTC.
Global mode offers the following functionality:
[!NOTE] Global mode (WebRTC) is available only in the Google Play version.
Screenshots
RTSP mode supports two sub-modes. Server mode (default) hosts the Android device as an RTSP server so compatible players can connect directly. Client mode publishes the stream to an external RTSP media server, such as MediaMTX.
For optimal performance, a fast and stable network connection is recommended due to high traffic and low network delay requirements.
[!NOTE] Client mode requires an RTSP‑capable media server (e.g., MediaMTX).
Screenshots
To contribute a translation, translate the following five files:
Keep the same key order and blank-line placement as the English source files, and preserve all formatting placeholders such as %1$s and %1$d.
Please submit a pull request. If that is not possible, you can send the translated files to the developer via e-mail at dkrivoruchko@gmail.com.
Your contribution helps make the application more accessible. Thank you for your efforts.
Developed by Dmytro Kryvoruchko. If you have any issues or ideas, feel free to contact me.
App Privacy Policy and Terms & Conditions
The MIT License (MIT)
Copyright (c) 2016 Dmytro Kryvoruchko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1,871 followers · starred Jul 2021
47 followers · starred Feb 2021
85 followers · starred Jun 2020
8 followers · starred May 2021