Web GUI for Deltacast SDI capture card recording — FFmpeg-based multi-port recorder with ProRes/DNxHD/H264 codecs, SRT streaming, SCTE35/104 ad marker injection, and HLS preview
| backend | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
Deltacast SDI Recorder
Web-based recording suite for Deltacast SDI capture cards. Multi-port recorder with real-time preview, SRT streaming, and SCTE35/104 ad marker injection.
Features
- Multi-port recording — Independent recorders for up to 4 SDI ports
- Codec support — ProRes, DNxHD, H.264, Uncompressed (MXF output)
- SRT streaming — Simultaneous file recording + SRT stream output
- SCTE35/104 ad markers — Binary cue injection + webhook triggering
- Live preview — Low-latency HLS preview per port (5s latency)
- Web GUI — React 18 + TypeScript frontend with real-time status
Requirements
- Deltacast SDI capture card(s) with VideoMaster SDK and FFmpeg plugin installed
- Docker + Docker Compose
- Devices:
/dev/deltacast0through/dev/deltacast3
Quick Start
git clone https://forge.wilddragon.net/zgaetano/deltacast-sdi-recorder
cd deltacast-sdi-recorder
docker compose up -d
Access the GUI at: http://localhost
Configuration
Copy and edit the backend environment file:
cp backend/.env.example backend/.env
Key variables:
| Variable | Default | Description |
|---|---|---|
DELTACAST_PORT_COUNT |
4 |
Number of SDI ports |
RECORDING_DIR |
/recordings |
Output directory |
SRT_LATENCY |
5000 |
SRT latency in ms |
LOG_LEVEL |
INFO |
Logging verbosity |
Architecture
┌─────────────────────────────────────────────┐
│ Browser (React GUI) │
│ - Port status cards (real-time via WS) │
│ - HLS video preview per port │
│ - SCTE35 ad break injection │
│ - Per-port codec/destination config │
└──────────────┬──────────────────────────────┘
│ HTTP/WebSocket (Nginx proxy)
┌──────────────▼──────────────────────────────┐
│ FastAPI Backend │
│ ├── RecorderManager (4x PortRecorder) │
│ │ └── FFmpeg subprocess per port │
│ ├── SCTE35Manager (binary + webhook) │
│ ├── HLSPreviewManager (HLS transcode) │
│ └── SRTStreamer (independent SRT output) │
└──────────────┬──────────────────────────────┘
│ deltacast:// device
┌──────────────▼──────────────────────────────┐
│ Deltacast SDI Card (VideoMaster SDK) │
│ Ports 0-3 → FFmpeg Deltacast plugin │
└─────────────────────────────────────────────┘
Development
# Backend (Python)
cd backend
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload
# Frontend (Node)
cd frontend
npm install
npm run dev
Run backend tests:
cd backend
pytest tests/ -v