https://github.com/abc3/hydra-srt
HydraSRT – An Open Source Alternative to Haivision SRT Gateway
https://github.com/abc3/hydra-srt
c elixir gstreamer live-streaming low-latency multimedia srt
Last synced: 3 months ago
JSON representation
HydraSRT – An Open Source Alternative to Haivision SRT Gateway
- Host: GitHub
- URL: https://github.com/abc3/hydra-srt
- Owner: abc3
- Created: 2025-03-09T12:17:33.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-03-09T13:07:58.000Z (3 months ago)
- Last Synced: 2025-03-09T13:23:25.769Z (3 months ago)
- Topics: c, elixir, gstreamer, live-streaming, low-latency, multimedia, srt
- Language: Elixir
- Homepage:
- Size: 480 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HydraSRT – An Open Source Alternative to Haivision SRT Gateway
> ⚠️ **Pre-Alpha Status**: This project is in a very early development stage. Features may be incomplete, and breaking changes are expected.
- [Overview](#overview)
- [Motivation](#motivation)
- [Architecture](#architecture)
- [Docs](#docs)
- [Features](#features)
- [Inspiration](#inspiration)
- [Contact](#contact)## Overview
https://github.com/user-attachments/assets/8230f902-b037-424f-a337-a3828dac6a3c
HydraSRT is an open-source, high-performance alternative to the **Haivision SRT Gateway**. It is designed to provide a scalable and flexible solution for **Secure Reliable Transport (SRT)** video routing, with support for multiple streaming protocols.
## Motivation
HydraSRT aims to deliver a robust and adaptable solution for video routing, offering a scalable alternative to proprietary systems. It supports multiple streaming protocols, ensuring flexibility and high performance.
## Architecture
HydraSRT is structured into **three core layers**, each designed for efficiency, reliability, and modularity:
### **1. Management & Control Layer (Elixir)**
- **Manages streaming pipelines** and dynamic route configurations.
- **Exposes a REST API** for frontend interaction.
- **Uses [Khepri](https://rabbitmq.github.io/khepri/)** as a **persistent tree-based key-value store** for system state and configurations.#### Cluster Mode
Coming soon...
### **2. Streaming & Processing Layer (Isolated C + GStreamer)**
- **Memory safety & stability** – The C-based application runs as a separate, isolated process, ensuring that memory leaks do not affect the Elixir control layer. Elixir can monitor for issues and terminate pipelines if necessary to maintain system stability.
- **High-performance video processing** via **GStreamer**.
- **Secure interprocess communication** with the Elixir layer.### **3. User Interface Layer (Vite + React + Ant Design)**
- **Communicates with the backend via REST API** for real-time control.
- **Provides a dashboard and route management tools** for users to interact with the system.
- **Supports user authentication and session management** to ensure secure access.
- **Displays route status and allows for route configuration** through a user-friendly interface.## Docs
Coming soon.
## Features
- [x] SRT Source Modes:
- [x] Listener
- [x] Caller
- [x] Rendezvous
- [x] SRT Destination Modes:
- [x] Listener
- [x] Caller
- [x] Rendezvous
- [x] SRT Authentication
- [x] SRT Source Statistics
- [ ] SRT Destination Statistics
- [x] UDP Support:
- [x] Source
- [x] Destination
- [ ] Cluster Mode
- [ ] Dynamic Routing
- [ ] RTSP
- [ ] RTMP
- [ ] HLS
- [ ] MPEG-DASH
- [ ] WebRTC[Missed something? Add a request!](https://github.com/abc3/hydra-srt/issues/new)
## Development
To run HydraSRT locally, you'll need to start both the Elixir backend and the web UI.
### Backend
```bash
# Start the Elixir node
make dev
```### Frontend
```bash
# Start the web UI
cd web_app && yarn dev
```## Inspiration
- [Secure Reliable Transport](https://en.wikipedia.org/wiki/Secure_Reliable_Transport)
- [Haivision SRT Gateway](https://www.haivision.com/products/srt-gateway/)## Contact
For support or inquiries, please contact me at [[email protected]](mailto:[email protected]).