High-quality, low-latency local network streaming from mobile devices to OBS Studio.
- 📱 Mobile Camera Streaming - Use any iOS/Android device as a camera source
- 🎥 OBS Integration - Direct integration with OBS Studio via Browser Source
- ⚡ Ultra-Low Latency - <100ms latency on local network
- 🎨 Advanced Camera Controls - Brightness, contrast, saturation, white balance
- ⛶ Fullscreen Preview - Professional monitoring mode with overlay controls
- 📊 Real-time Statistics - Monitor FPS, bitrate, resolution, and latency
- 🌐 Cross-Platform - Works on macOS, Windows, and Linux
- 🔒 HTTPS Support - Secure connections for iOS camera access
- 📲 QR Code Setup - Easy mobile device connection
# Install dependencies
npm install
# Generate SSL certificates (for iOS)
npm run generate-cert
# Start server
npm startDownload the appropriate zip file for your platform from the releases page:
- macOS Intel:
LocalStream-macos-intel.zip - macOS Apple Silicon:
LocalStream-macos-silicon.zip - Windows:
LocalStream-windows.zip - Linux:
LocalStream-linux.zip
Then simply unzip and run!
-
Start the Server
- Run
npm startor the executable - Server starts on
http://localhost:3000andhttps://localhost:3443
- Run
-
Connect Mobile Device
- Open
https://YOUR_IP:3443/mobileon your phone - Accept the security warning (self-signed certificate)
- Allow camera and microphone access
- Configure quality and camera
- Click "Start Streaming"
- Tip: Use the fullscreen icon for a better monitoring experience and access advanced controls!
- Open
-
Add to OBS
- In OBS, add a Browser Source
- Copy the viewer URL from mobile or desktop dashboard
- Paste into OBS Browser Source URL
- Set size to 1920x1080 @ 60fps
- Done!
See BUILD.md for detailed instructions on creating standalone executables.
# Build for all platforms (automatically creates zips)
npm run build:all
# Or build for specific platform
npm run build:mac
npm run build:windows
npm run build:linux- iOS Setup Guide - How to use with iOS devices
- OBS Setup Guide - OBS integration instructions
- Build Guide - Creating standalone executables
- Node.js: 18+ (if running from source)
- Ports: 3000 (HTTP) and 3443 (HTTPS)
- Network: Local network access
- iOS: Safari 14+ (requires HTTPS)
- Android: Chrome 90+
- Camera: Any device with camera access
- Version: 28.0+
- Browser Source: Enabled
Edit config.json to customize:
{
"server": {
"port": 3000,
"httpsPort": 3443,
"host": "0.0.0.0"
},
"webrtc": {
"iceServers": [...]
}
}Mobile Device (Camera)
↓ WebRTC
Server (Node.js + Socket.IO)
↓ WebRTC
OBS Studio (Browser Source)
- Backend: Node.js, Express, Socket.IO
- Frontend: Vanilla HTML/CSS/JavaScript
- Streaming: WebRTC (peer-to-peer)
- Discovery: mDNS/Bonjour
- Build: pkg (standalone executables)
- Latency: <100ms on local network
- Quality: Up to 4K 60fps
- Bitrate: Adaptive 1-20 Mbps
- CPU: Low (hardware encoding when available)
Note: Audio is currently DISABLED by default to optimize network bandwidth and stability for multi-device streaming (Video-Only Mode).
If you need audio, you can re-enable it by editing public/mobile/streamer.js:
- Open
public/mobile/streamer.js - Find the
getUserMediaconstraints (around line 295 and 465):// Change audio: false to true audio: true
- Restart the server (
npm start) and reload the mobile page.
- Make sure you're using HTTPS (
https://...) - Accept the self-signed certificate warning
- See iOS_SETUP.md
- Use HTTP URL instead of HTTPS
- Check that stream is active on mobile
- Try disabling hardware acceleration in OBS
- Ensure devices are on the same local network
- Check WiFi signal strength
- Reduce quality preset if needed
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
For issues and questions:
- Check the documentation
- Open an issue on GitHub
- Check existing issues for solutions
Version: 1.0.3
Author: LocalStream Team
Last Updated: 2025-12-07