Skip to content

MrVanguardia/streamlinux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

StreamLinux

StreamLinux

Real-time Screen Streaming from Linux to Android

Version Status License Platform

Download | Installation | Usage | Technologies | Build


Alpha Software - This project is in early development. Expect bugs and incomplete features. Not recommended for production use.


About

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

New in v0.2.3: Professional Audio System

StreamLinux v0.2.3 introduces a complete audio overhaul designed for audiophiles and professionals who demand pristine sound quality.

Per-Application Audio Capture

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

Studio-Grade Audio Processing

Every audio stream is processed through a professional mastering chain before encoding:

  1. High-pass filter @ 25Hz - Removes sub-bass rumble and DC offset
  2. 3-band equalizer - Tightens bass, preserves mids, smooths highs
  3. Soft-knee compressor - Gentle 2:1 dynamic range control
  4. Brick-wall limiter @ -1dBFS - Prevents clipping while preserving headroom
  5. High-quality resampling - 48kHz optimal for Opus fullband encoding

Result: Crystal-clear audio with no artifacts, optimized for codec transparency.

High-Fidelity Encoding

  • 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

Technologies

StreamLinux is built using industry-standard open source technologies:

Linux Host

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

Android Client

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

Signaling Server

Technology Purpose
Go High-performance server runtime
gorilla/websocket WebSocket connections
mDNS Local network service discovery
TLS Secure signaling channel

Protocols & Standards

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

Security Policy


Downloads

Latest Release: 0.2.3-alpha

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

Download

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

Installation

Linux (Fedora/RHEL)

sudo dnf install streamlinux-0.2.0-1.alpha.fc43.x86_64.rpm

Android

Download the APK, enable installation from unknown sources, and install.


Usage

WiFi Connection

  1. Launch StreamLinux from applications menu
  2. Grant screen capture permission when prompted
  3. Open StreamLinux on Android device
  4. Scan the QR code shown on Linux
  5. Streaming starts automatically

USB Connection

  1. Connect Android via USB with debugging enabled
  2. Launch StreamLinux on Linux
  3. Click "Start USB" in the application
  4. Scan QR code from Android app

Security

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.


Building from Source

Linux

# 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.py

Android

cd android-client
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
./gradlew assembleDebug

RPM Package

cd linux-gui/packaging/rpm && ./build-rpm.sh --rebuild

Architecture

Linux 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         |
+------------------+                    +------------------+

Specifications

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

Roadmap

  • Hardware encoding (VAAPI, NVENC)
  • H.264/H.265 codec support
  • Touch input from Android to Linux
  • Multi-monitor selection
  • Flatpak packaging
  • Play Store release

✨ Contributors

Thanks to these amazing people!


MrVanguardia
πŸ’» Code β€’ 🎨 Design β€’ πŸ“¦ Packaging β€’ πŸš€ Deployment
Creator & Lead Developer

ST-2
πŸ”’ Security β€’ πŸ§ͺ Testing β€’ πŸ›‘οΈ Privacy
Security & QA Specialist

Contributing

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.


License

MIT License. See LICENSE for details.


StreamLinux is an open source project by Vanguardia Studio


Made with ❀️ in Dominican Republic πŸ‡©πŸ‡΄

About

Stream your Linux screen to Android with ultra-low latency using WebRTC

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors