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
Find a file
2026-04-14 09:21:20 -04:00
backend Add backend/tests/test_srt_streamer.py 2026-04-14 09:21:13 -04:00
frontend Add frontend/tsconfig.node.json 2026-04-14 09:21:20 -04:00
.gitignore Add .gitignore 2026-04-14 09:21:06 -04:00
docker-compose.yml Add docker-compose.yml 2026-04-14 09:21:14 -04:00
README.md Add README.md 2026-04-14 09:21:06 -04:00

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/deltacast0 through /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