A streaming server for Outback challenges that allows users to stream their screen and watch recordings in real-time.
- Screen sharing via browser MediaRecorder API
- Real-time HLS transcoding with FFmpeg
- Immediate playback of recordings
- WebSocket-based chunk streaming
GET /stream/:userId/:challengeNum- Start a screen share streamGET /watch/:userId/:challengeNum- Watch a recorded streamGET /- Health check endpoint
This server is designed to be deployed on Coolify, similar to airtable-active-record.
PORT- Server port (default: 3000)
The Dockerfile includes FFmpeg for video transcoding. Build and run:
docker build -t outback-streaming .
docker run -p 3000:3000 outback-streaming- User navigates to
/stream/:userId/:challengeNum - Browser requests screen share permission
- MediaRecorder captures screen and audio
- Chunks are sent to server via WebSocket
- Server writes chunks to WebM file
- FFmpeg transcodes WebM to HLS format in real-time
- Users can watch at
/watch/:userId/:challengeNumimmediately
Recordings are stored in the recordings/ directory as HLS playlists and segments. Each recording is organized by userId_challengeNum.