[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7474":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},7474,"ScreenStream","dkrivoruchko\u002FScreenStream","dkrivoruchko","ScreenStream Android App","https:\u002F\u002Fscreenstream.io",null,"Kotlin",2438,469,96,21,0,1,6,43,7,69.32,"MIT License",false,"master",[],"2026-06-12 04:00:33","![](docs\u002Fimages\u002Fhero.png)\n# ScreenStream\n\nScreenStream is a user-friendly 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 or player.\n\nThe Google Play version supports all modes: **Global mode (WebRTC)**, **Local mode (MJPEG)**, and **RTSP mode**, with ads included.\u003Cbr>\nF-Droid versions are ad-free and support only **Local mode (MJPEG)** and **RTSP mode**.\n\n\u003Ca href='https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=info.dvkr.screenstream'>\u003Cimg alt='Get it on Google Play' src='https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fimages\u002Fgeneric\u002Fen_badge_web_generic.png' height=\"100\"\u002F>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Ff-droid.org\u002Fpackages\u002Finfo.dvkr.screenstream\u002F\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ff-droid.org\u002Fbadge\u002Fget-it-on.png\" alt=\"Get it on F-Droid\" height=\"100\"\u002F>\u003C\u002Fa>\n\n## Project support\n\nIf **ScreenStream** is useful to you and you want to support its development, you can use any of the options below.\n\n**Preferred (Tether Wallet \u002F Tether.me):** `dmkr0@tether.me`\n\nTether Wallet supports Tether.me addresses as human-readable identifiers, so this is the simplest option if you already use Tether Wallet.\n\nIf you prefer direct on-chain transfers, use one of these addresses:\n\n**USD₮ \u002F USA₮ (Ethereum \u002F ERC-20):** `0x5bb898c72dd3dD5E7f7A0Ab12854a60374B7c1dA`\n\n**BTC (on-chain):** `bc1q8wuv4esej0rdyn2jwkd93v7wvyep7uutzsmlh9`\n\n## Stream modes\n\nScreenStream offers three stream modes: **Global mode (WebRTC)** (available only in the [Google Play Store](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?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.\n\n| Mode                       | Transport                             | Audio | Internet required              | Server side                                                            | Security                                     |\n|----------------------------|---------------------------------------|-------|--------------------------------|------------------------------------------------------------------------|----------------------------------------------|\n| **Local mode (MJPEG)**     | MJPEG over HTTP                       | ✕     | No                             | Built-in                                                               | Optional 4-6 digit PIN                       |\n| **Global mode (WebRTC)**   | WebRTC                                | ✓     | Yes                            | Public signaling service at [screenstream.io](https:\u002F\u002Fscreenstream.io) | End-to-end encryption + password             |\n| **RTSP mode**              | RTSP\u003Cbr>H.265\u002FH.264\u003Cbr>OPUS\u002FAAC\u002FG.711 | ✓     | No (server) \u002F Depends (client) | Built‑in server (Server mode) \u002F External server (client mode)          | Client mode supports RTSP auth + RTSPS (TLS) |\n\nIn **Global mode (WebRTC)** and **Local mode (MJPEG)**, the number of clients is not directly limited, but each client uses CPU resources and separate bandwidth.\n\nScreenStream uses Android's [MediaProjection](https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroid\u002Fmedia\u002Fprojection\u002FMediaProjection) API and requires Android 6.0 or higher.\n\n> [!WARNING]\n>\n> - **High traffic on mobile networks:** Streaming over 3G\u002F4G\u002F5G\u002FLTE can consume a large amount of data.\n>\n> - **Streaming delay:** Expect at least 0.5-1 second of delay, and potentially more on slower devices, unstable networks, or under heavy CPU load.\n>\n> - **Not optimized for video playback:** ScreenStream is not designed for streaming video content, especially HD video, so playback quality may not meet your expectations.\n\n### Local mode (MJPEG)\n\nLocal mode uses MJPEG and a built-in HTTP server. It works on a local network without internet, such as Wi-Fi, a device hotspot, Network-over-USB, or any other network between the Android device and the client's browser.\n\nFor optimal performance, a fast and stable network connection is recommended due to high traffic and low network delay requirements.\n\nIn 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.\n\nThe Local mode offers the following functionality:\n\n- Uses MJPEG.\n- PIN protection, no encryption.\n- Video only, sent as separate images.\n- Works on your local network, no internet required.\n- Built-in HTTP server.\n- Allows resizing by percentage or exact resolution.\n- Supports Wi-Fi, mobile networks, IPv4, and IPv6.\n- Clients connect in a browser using the app address.\n- Highly customizable.\n- Each client uses separate bandwidth.\n\n> [!NOTE]\n>\n> - Please be aware that certain cell operators may block incoming connections to your device for security reasons. Consequently, even if your device has an IP address from a cell operator, connecting to the device using this IP address may not be possible.\n>\n> - Some Wi-Fi networks, particularly public or guest networks, may block connections between its clients for security reasons. In such cases, connecting to the device via Wi-Fi might not be feasible. For instance, a laptop and a phone within such a Wi-Fi network will not be able to connect to each other.\n\n**Screenshots**\n\n\u003Cp>\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-1.png\" alt=\"Local mode main screen\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-7.png\" alt=\"Local mode activity and connected clients\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-2.png\" alt=\"Local mode information dialog\" width=\"270\" \u002F>\n\u003C\u002Fp>\n\u003Cp>\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-3.png\" alt=\"Local mode general settings\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-4.png\" alt=\"Local mode image settings\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-5.png\" alt=\"Local mode security settings\" width=\"270\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fmjpeg-6.png\" alt=\"Local mode advanced settings\" width=\"290\" \u002F>\n\u003C\u002Fp>\n\n### Global mode (WebRTC)\n\nGlobal mode in the ScreenStream application is built on WebRTC technology and relies on an external signaling server to facilitate communication between the streaming host (the app) and the streaming client, which is a web browser equipped with the ScreenStream [Web Client](https:\u002F\u002Fscreenstream.io).\n\nBoth the signaling server and the web client for ScreenStream are open-source and available in the [ScreenStreamWeb](https:\u002F\u002Fgithub.com\u002Fdkrivoruchko\u002FScreenStreamWeb) repository. These components are publicly available at [screenstream.io](https:\u002F\u002Fscreenstream.io). The system is designed to work with modern desktop and mobile browsers that support WebRTC, including Chrome, Safari, Edge, Firefox, and others.\n\nGlobal mode offers the following functionality:\n\n- Powered by WebRTC technology.\n- End-to-end encrypted communication.\n- Stream protection with password.\n- Supports video and audio streaming.\n- Connect using a unique stream ID and password.\n- Requires an internet connection for streaming.\n- Each client uses separate internet bandwidth.\n\n> [!NOTE]\n> Global mode (WebRTC) is available only in the Google Play version.\n\n**Screenshots**\n\n\u003Cp>\n  \u003Cimg src=\"docs\u002Fimages\u002Fwebrtc-1.png\" alt=\"Global mode main screen\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fwebrtc-2.png\" alt=\"Global mode information dialog\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Fwebrtc-3.png\" alt=\"Global mode audio settings\" width=\"270\" \u002F>\n\u003C\u002Fp>\n\n### RTSP mode\n\nRTSP mode in ScreenStream supports two sub‑modes: server mode (default) hosts this device as an RTSP server, while client mode connects to an external RTSP media server, providing compatibility with a wide range of standard RTSP clients.\n\nFor optimal performance, a fast and stable network connection is recommended due to high traffic and low network delay requirements.\n\n- Powered by RTSP protocol.\n- Server mode (default) hosts device as an RTSP server.\n- Client mode connects to a remote RTSP server (e.g., MediaMTX).\n- Supports video and audio with codec configuration.\n- Server mode adds protocol, interface\u002Faddress filters, IPv4\u002FIPv6, and port settings.\n- Requires an RTSP client or player for viewing.\n- Tested with [VLC media player](https:\u002F\u002Fwww.videolan.org\u002Fvlc\u002F), [FFplay](https:\u002F\u002Fffmpeg.org\u002Fffplay.html), [mpv](https:\u002F\u002Fmpv.io\u002F), and [gst-play-1.0](https:\u002F\u002Fgstreamer.freedesktop.org\u002F) (GStreamer) players.\n\n> [!NOTE]\n> Client mode requires an RTSP‑capable media server (e.g., [MediaMTX](https:\u002F\u002Fgithub.com\u002Fbluenviron\u002Fmediamtx)).\n\n**Screenshots**\n\n\u003Cp>\n  \u003Cimg src=\"docs\u002Fimages\u002Frtsp-1.png\" alt=\"RTSP mode main screen\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Frtsp-2.png\" alt=\"RTSP mode information dialog\" width=\"270\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Frtsp-3.png\" alt=\"RTSP mode server settings\" width=\"270\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fimages\u002Frtsp-4.png\" alt=\"RTSP mode video settings\" width=\"290\" \u002F>&nbsp;\n  \u003Cimg src=\"docs\u002Fimages\u002Frtsp-5.png\" alt=\"RTSP mode audio settings\" width=\"290\" \u002F>\n\u003C\u002Fp>\n\n## Contribution\n\nTo contribute a translation, please translate the following five files:\n\n1. [app\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml](app\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml)\n1. [common\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml](common\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml)\n1. [mjpeg\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml](mjpeg\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml)\n1. [webrtc\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml](webrtc\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml)\n1. [rtsp\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml](rtsp\u002Fsrc\u002Fmain\u002Fres\u002Fvalues\u002Fstrings.xml)\n\nPlease submit a [pull request](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpull-requests\u002Fcollaborating-with-pull-requests\u002Fproposing-changes-to-your-work-with-pull-requests\u002Fcreating-a-pull-request). If that is not possible, you can send the translated files to the developer via e-mail \u003Cdkrivoruchko@gmail.com>.\n\nYour contribution helps make the application more accessible. Thank you for your efforts.\n\n## Developer\n\nDeveloped by [Dmytro Kryvoruchko](mailto:dkrivoruchko@gmail.com). If you have any issues or ideas, feel free to contact me.\n\n## Privacy and Terms\n\nApp [Privacy Policy](PrivacyPolicy.md) and [Terms & Conditions](TermsConditions.md)\n\n## License\n\n```\nThe MIT License (MIT)\n\nCopyright (c) 2016 Dmytro Kryvoruchko\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and\u002For sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n","ScreenStream是一款用户友好的Android应用程序，用于流式传输设备屏幕和音频。它支持三种模式：全局模式（WebRTC）、本地模式（MJPEG）以及RTSP模式。全局模式基于WebRTC技术，支持音频传输并需要互联网连接；本地模式使用MJPEG通过HTTP传输，无需互联网但不支持音频；RTSP模式则适用于兼容的RTSP客户端或播放器，并支持多种编解码器。该应用适合需要远程监控、演示或分享屏幕内容的各种场景，如在线教育、技术支持等。采用Kotlin编写，确保了良好的性能与稳定性。",2,"2026-06-11 03:12:39","top_language"]