sivajisnehith/streamforge — explained in plain English
Analysis updated 2026-05-18
Learn how a video streaming ingestion pipeline works end to end, from upload to adaptive quality playback.
Prototype a backend that converts uploaded videos into multiple resolutions for smooth streaming.
Use as a reference for decoupling slow processing work from a web API using a message queue.
Run a self hosted video upload and transcoding stack locally with Docker for testing or learning.
| sivajisnehith/streamforge | abhishek-kumar09/mern-live-js-june-2021 | abhishek-kumar09/z | |
|---|---|---|---|
| Stars | 1 | 1 | 1 |
| Language | HTML | HTML | HTML |
| Last pushed | — | 2021-09-13 | 2019-12-23 |
| Maintenance | — | Dormant | Dormant |
| Setup difficulty | moderate | moderate | easy |
| Complexity | — | 2/5 | 1/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Fully dockerized, needs Docker and Docker Compose but no local Java, Maven, or FFmpeg install.
StreamForge is a backend system that mimics how large video platforms handle uploaded videos behind the scenes. Instead of processing a video the moment someone uploads it, which would make the person wait a long time for a response, StreamForge separates the upload step from the actual video processing work, so the upload finishes quickly and the heavy processing happens afterward in the background. When a video is uploaded, a Spring Boot API, a Java based web framework, saves the raw file to MinIO, a self hosted file storage system, and records basic information about the video in a PostgreSQL database. The API then sends a message to a queue managed by RabbitMQ and immediately replies to the user with the video's ID, without waiting for processing to finish. A separate background worker watches that queue, picks up new videos, and runs FFmpeg, a video processing tool, to convert the original file into multiple quality levels such as 480p, 720p, and 1080p, packaged in a streaming friendly format called HLS that can automatically switch quality based on a viewer's internet speed. It also generates a thumbnail image and extracts technical details about the video, then updates the database once everything is ready. The project includes user accounts protected by token based authentication, so only the person who uploaded a video can change or delete it, along with search, pagination for browsing many videos, and a Swagger interface for testing the API directly in a browser. Everything runs through Docker, so a user can start the whole system, including the database, message queue, and storage, with a single command, without installing Java or FFmpeg themselves. It is released under the MIT license.
A backend system that ingests uploaded videos, converts them into multiple streaming quality levels in the background using FFmpeg and RabbitMQ, similar to how streaming platforms process video.
Mainly HTML. The stack also includes Java, Spring Boot, PostgreSQL.
MIT license, use freely for any purpose including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.