This is a lightweight, decoupled client-server application for uploading and streaming videos using HTTP Live Streaming (HLS). It features a Rust (Axum) backend for fast, concurrent video processing and a Svelte frontend for a reactive user interface.
Before running this application locally, ensure you have the following installed on your system:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shbrew install ffmpegsudo apt update && sudo apt install ffmpegwinget install ffmpeg, and ensure it is added to your system's PATH.Assuming you have extracted the project files from the provided ZIP archive, follow these steps to run the application:
The backend handles file uploads, orchestrates FFmpeg, and serves the video segments.
backend directory:cd backend
cargo run --release
(Note: --release is recommended for better video processing performance. The backend will start on http://127.0.0.1:8000)The frontend provides the UI for uploading videos and the player for streaming them.
frontend directory:cd frontend
npm install
npm run dev
(The frontend will start on http://localhost:3000 and automatically proxy API requests to the backend)Open your web browser and navigate to: http://localhost:3000
You can now upload a video file (up to 1GB). The system will immediately begin transcoding it into HLS segments, and you can start watching the stream while it processes in the background!
For a detailed breakdown of the system design, performance optimizations, and proxy routing decisions, please refer to the architecture.md file included in this repository.