Add README.md
This commit is contained in:
parent
6785fa228b
commit
224a456760
1 changed files with 91 additions and 0 deletions
91
README.md
Normal file
91
README.md
Normal 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
|
||||||
|
```
|
||||||
Loading…
Reference in a new issue