Add README.md

This commit is contained in:
Zac Gaetano 2026-04-14 09:21:06 -04:00
parent 6785fa228b
commit 224a456760

91
README.md Normal file
View file

@ -0,0 +1,91 @@
# 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
```bash
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:
```bash
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
```bash
# 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:
```bash
cd backend
pytest tests/ -v
```