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