Real-time Screen Streaming from Linux to Android
Download | Installation | Usage | Technologies | Build
Alpha Software - This project is in early development. Expect bugs and incomplete features. Not recommended for production use.
StreamLinux enables low-latency screen and audio streaming from Linux to Android devices using WebRTC technology. Designed with privacy and security as core principles, all streaming occurs directly over your local network without external servers.
Core Capabilities:
- WebRTC-based streaming with VP8 video and Opus audio codecs
- WiFi (LAN) and USB connection modes
- Hardware-accelerated encoding via VAAPI
- System audio capture through PipeWire and PulseAudio
- Application-specific audio capture - Stream audio from individual apps
- QR code-based device pairing
- End-to-end encryption using DTLS-SRTP
StreamLinux v0.2.3 introduces a complete audio overhaul designed for audiophiles and professionals who demand pristine sound quality.
Stream audio from specific applications instead of your entire system. Perfect for:
- Gaming - Stream game audio without Discord/TeamSpeak
- Music production - Share DAW output without system sounds
- Video calls - Capture specific meeting apps
- Content creation - Stream media players without notifications
Features:
- Automatic detection of all running applications (playing or silent)
- Dynamic sink-input discovery for zero-configuration streaming
- Compatible with Brave, Chrome, Firefox, Spotify, VLC, and any PulseAudio app
Every audio stream is processed through a professional mastering chain before encoding:
- High-pass filter @ 25Hz - Removes sub-bass rumble and DC offset
- 3-band equalizer - Tightens bass, preserves mids, smooths highs
- Soft-knee compressor - Gentle 2:1 dynamic range control
- Brick-wall limiter @ -1dBFS - Prevents clipping while preserving headroom
- High-quality resampling - 48kHz optimal for Opus fullband encoding
Result: Crystal-clear audio with no artifacts, optimized for codec transparency.
- 510 kbps Opus - Near-transparent quality for music and gaming
- Fullband mode - Complete 20Hz-20kHz frequency response
- Ultra-low latency - Optimized buffer management for real-time streaming
StreamLinux is built using industry-standard open source technologies:
| Technology | Purpose |
|---|---|
| Python 3 | Main application logic |
| GTK4 | Modern graphical user interface |
| libadwaita | GNOME design patterns and adaptive layouts |
| GStreamer | Media pipeline and streaming framework |
| WebRTC (webrtcbin) | Real-time peer-to-peer communication |
| PipeWire | Screen capture on Wayland, audio routing |
| PulseAudio | Audio capture (legacy support) |
| GLib/GIO | Async I/O, D-Bus integration |
| xdg-desktop-portal | Secure screen capture permissions |
| Technology | Purpose |
|---|---|
| Kotlin | Application logic and UI |
| Jetpack Compose | Modern declarative UI framework |
| WebRTC (libwebrtc) | Real-time streaming reception |
| MediaCodec | Hardware-accelerated video decoding |
| CameraX | QR code scanning |
| Coroutines | Asynchronous programming |
| Material Design 3 | UI components and theming |
| Technology | Purpose |
|---|---|
| Go | High-performance server runtime |
| gorilla/websocket | WebSocket connections |
| mDNS | Local network service discovery |
| TLS | Secure signaling channel |
| Protocol | Purpose |
|---|---|
| WebRTC | Real-time media transport |
| VP8 | Video codec |
| Opus | Audio codec |
| DTLS-SRTP | Media encryption |
| ICE/STUN | NAT traversal |
| WebSocket | Signaling transport |
| HMAC-SHA256 | Token authentication |
| Platform | Package | Download |
|---|---|---|
| Linux (Fedora/RHEL) | RPM | streamlinux-0.2.3-1.alpha.fc43.x86_64.rpm |
| Android | APK | StreamLinux-0.2.3-alpha.apk |
Requirements:
| Linux Host | Android Client |
|---|---|
| Fedora 38+ / Ubuntu 22.04+ | Android 8.0+ (API 26) |
| Wayland or X11 | 2GB RAM minimum |
| GStreamer 1.20+ | WiFi or USB connection |
| PipeWire or PulseAudio |
Linux (Fedora/RHEL)
sudo dnf install streamlinux-0.2.0-1.alpha.fc43.x86_64.rpmAndroid
Download the APK, enable installation from unknown sources, and install.
- Launch StreamLinux from applications menu
- Grant screen capture permission when prompted
- Open StreamLinux on Android device
- Scan the QR code shown on Linux
- Streaming starts automatically
- Connect Android via USB with debugging enabled
- Launch StreamLinux on Linux
- Click "Start USB" in the application
- Scan QR code from Android app
StreamLinux implements multiple security layers:
| Layer | Implementation |
|---|---|
| Authentication | Cryptographic tokens with automatic expiration |
| Token Integrity | HMAC-SHA256 signatures |
| Media Encryption | DTLS-SRTP (WebRTC standard) |
| Network | Local network only, no external servers |
| Data Collection | None |
Android Permissions: Camera (QR scanning), Internet, Network State, Wake Lock. No storage, location, or contact access.
# Dependencies (Fedora)
sudo dnf install python3-gobject gtk4 libadwaita gstreamer1-plugins-bad-free \
gstreamer1-plugins-good gstreamer1-vaapi pipewire-gstreamer golang
# Build signaling server
cd signaling-server && go build -o signaling-server ./cmd/server/
# Run
cd linux-gui && python3 streamlinux_gui.pycd android-client
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
./gradlew assembleDebugcd linux-gui/packaging/rpm && ./build-rpm.sh --rebuildLinux Host Android Client
+------------------+ +------------------+
| Screen Capture | | QR Scanner |
| (PipeWire/X11) | +--------+---------+
+--------+---------+ |
| +--------v---------+
+--------v---------+ | Signaling |
| GStreamer | | Client |
| VP8 + Opus | +--------+---------+
+--------+---------+ |
| +--------v---------+
+--------v---------+ WebSocket | WebRTC |
| Signaling |<------------------>| PeerConnection |
| Server (Go) | +--------+---------+
+--------+---------+ |
| +--------v---------+
+--------v---------+ DTLS-SRTP | MediaCodec |
| WebRTC |<------------------>| Decoder |
+------------------+ +------------------+
| Parameter | Value |
|---|---|
| Video Codec | VP8 |
| Audio Codec | Opus |
| Max Resolution | 1920x1080 |
| Max Frame Rate | 60 FPS |
| Video Bitrate | Up to 8 Mbps |
| Audio Bitrate | 320 kbps |
| Latency | 50-150ms typical |
- Hardware encoding (VAAPI, NVENC)
- H.264/H.265 codec support
- Touch input from Android to Linux
- Multi-monitor selection
- Flatpak packaging
- Play Store release
|
MrVanguardia π» Code β’ π¨ Design β’ π¦ Packaging β’ π Deployment Creator & Lead Developer |
ST-2 π Security β’ π§ͺ Testing β’ π‘οΈ Privacy Security & QA Specialist |
Contributions are welcome! Please open an issue first to discuss proposed changes.
If you'd like to contribute, check out our open issues or propose a new feature.
MIT License. See LICENSE for details.
StreamLinux is an open source project by Vanguardia Studio
Made with β€οΈ in Dominican Republic π©π΄