Overview
Discover what makes Restreamer powerful
Restreamer is a self‑hosted media streaming platform that acts as both an ingest server and a distribution hub. At its core it receives live video streams via protocols such as RTMP, SRT, or HTTP/HLS, performs optional transcoding with FFmpeg, and then republishes the stream to multiple destinations (YouTube‑Live, Twitch, Wowza, custom RTMP endpoints, etc.) or serves it directly to web clients through an embedded VideoJS player. The architecture is deliberately lightweight and container‑friendly, enabling deployments on anything from a single‑board computer like Raspberry Pi to GPU‑accelerated cloud VMs.
Runtime
Media Handling
Protocols
Storage & Persistence
Overview
Restreamer is a self‑hosted media streaming platform that acts as both an ingest server and a distribution hub. At its core it receives live video streams via protocols such as RTMP, SRT, or HTTP/HLS, performs optional transcoding with FFmpeg, and then republishes the stream to multiple destinations (YouTube‑Live, Twitch, Wowza, custom RTMP endpoints, etc.) or serves it directly to web clients through an embedded VideoJS player. The architecture is deliberately lightweight and container‑friendly, enabling deployments on anything from a single‑board computer like Raspberry Pi to GPU‑accelerated cloud VMs.
Architecture & Technical Stack
- Runtime: The application is written in Go, leveraging its built‑in concurrency primitives for handling multiple stream pipelines and WebSocket connections. The core server exposes a REST API (fully Swagger‑documented) for configuration, status monitoring, and control.
- Media Handling: All video processing is delegated to FFmpeg binaries. Restreamer invokes FFmpeg as a child process, passing command‑line arguments that control codec selection (H.264/AVC), bitrate, resolution, and audio handling. This keeps the Go code lean while still providing full flexibility of FFmpeg’s feature set.
- Protocols: Native support for RTMP/S, SRT, HTTP/HLS, and WebRTC (via the embedded VideoJS player). The server can simultaneously accept a source stream and push it out to dozens of destinations without re‑encoding unless configured.
- Storage & Persistence: Configuration is stored as JSON/YAML files under
/core/config. Runtime state (e.g., active streams, metrics) is kept in memory; optional Prometheus metrics are exposed on/metrics. No external database is required, simplifying the deployment footprint. - Containerization: The official Docker image bundles all dependencies and is built for AMD64, ARMv7, and ARM64. Volumes are mounted for configuration (
/core/config) and data storage (/core/data), allowing persistent state across container restarts.
Core Capabilities & APIs
- Multi‑input / Multi‑output pipelines: A single source stream can be duplicated to arbitrary numbers of destinations with per‑destination transcoding options.
- Audio manipulation: Optional muxing, silence insertion, or codec conversion (AAC/MP3) via FFmpeg flags.
- Web UI & REST API: The web interface provides a wizard for stream creation, while the JSON‑based REST API allows programmatic control—creating streams, listing active pipelines, and retrieving statistics.
- Security: Automatic Let’s Encrypt TLS certificates, optional HTTPS for the API and UI, and built‑in bandwidth throttling with viewer limits.
- Hardware acceleration: Native support for Raspberry Pi MMAL/OMX, Nvidia CUDA, and Intel VAAPI, enabling low‑CPU encoding on edge devices.
Deployment & Infrastructure
Restreamer is designed for self‑hosting with minimal operational overhead:
- Container first: A single
docker runcommand is sufficient for most environments. The image exposes ports 8080 (UI/API), 8181 (metrics), 1935/1936 (RTMP), and a configurable UDP port for SRT. - Edge devices: On Raspberry Pi, the image runs with
--privilegedto access USB cameras or the Pi camera module. Hardware acceleration is automatically detected. - Scalability: Each stream pipeline runs as a separate goroutine, so adding more streams scales linearly with available CPU and memory. For large‑scale deployments, a Kubernetes operator or Docker Compose stack can orchestrate multiple Restreamer instances behind a load balancer.
- Observability: Prometheus metrics and structured logs (JSON) can be shipped to ELK or Loki stacks for real‑time monitoring.
Integration & Extensibility
- Plugin hooks: While the core is monolithic, Restreamer exposes a REST endpoint for each stream’s lifecycle events. External services (e.g., a custom analytics engine) can subscribe via webhooks or polling.
- SDKs & SDK‑like libraries: The open API spec can be imported into any language (Go, Python, JavaScript) to build custom dashboards or automation scripts.
- Custom codecs & filters: By tweaking FFmpeg command arguments in the UI or via API, developers can apply complex filter chains (e.g., denoise, watermarking) without modifying the core codebase.
Developer Experience
- Documentation: The project hosts a comprehensive, auto‑generated Swagger UI and Markdown guides covering setup, API usage, and advanced configuration. The quick‑start Docker commands are intentionally concise.
- Community & Licensing: Licensed under Apache 2.0, Restreamer encourages contributions and offers a responsive GitHub issue tracker. The codebase is small enough that contributors can grasp the entire stack in a few days.
- Configuration: All tunable parameters are exposed either via the web UI or directly in JSON files, enabling CI/CD pipelines to push new stream definitions automatically.
Use Cases
| Scenario | Why Restreamer? |
|---|---|
| Live event broadcasting | Low‑latency RTMP ingestion, automatic HLS delivery to browsers. |
| Multi‑platform streaming | One source stream can be restreamed to YouTube, Twitch, Facebook, and internal Wowza servers with a single configuration. |
| Edge streaming | Run on Raspberry Pi or Nvidia Jetson to capture IP cameras and push to a central server. |
| Internal training videos | Serve high‑resolution HLS streams on an intranet |
Open SourceReady to get started?
Join the community and start self-hosting Restreamer today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Tags
Explore More Apps
Kriss Feed
Lightweight RSS reader without a database
Outline Server
Create and manage your own VPN with ease
Part-DB
Open‑source electronic parts inventory for web browsers
EDA
Simple Self‑Hosted Business Intelligence
Weblate
Open-source continuous localization platform
OpenProject
Collaborative project management for secure, on‑premises teams