- frontend types & components now use lowercase codec values (prores/dnxhd/
h264/uncompressed) to match backend CodecType enum. This was the real
cause of the silent Start Recording 422.
- recorder.py: replaced last .done() call on asyncio.subprocess.Process
with returncode-is-None check (same bug previously fixed in hls.py).
This was causing /api/ports/{n} to 500 during active recording and
health checks to fail while any port was running.
- useRecorder now parses pydantic 422 error bodies so field-level detail
reaches the UI, and App.tsx shows a fixed error banner.
- Added docker-compose.truenas.yml: no deltacast device passthrough,
frontend on :8088. Lavfi testsrc2 fallback kicks in automatically and
feeds the full HLS preview + recording pipeline with a test signal
(1080p30 + 1kHz tone). Verified end-to-end on Wooglin: 442MB/1:56s
H.264 MP4 + working HLS playlist.
47 lines
1.1 KiB
YAML
47 lines
1.1 KiB
YAML
version: '3.8'
|
|
|
|
# TrueNAS (Wooglin) override — no physical Deltacast card.
|
|
# The backend auto-detects missing /dev/deltacast{n} and falls back to
|
|
# a lavfi testsrc2 signal (colour bars + clock + 1 kHz tone) per port.
|
|
|
|
services:
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8000:8000"
|
|
# NOTE: no devices: block — lavfi fallback kicks in automatically
|
|
volumes:
|
|
- recordings:/recordings
|
|
- hls:/tmp/hls
|
|
environment:
|
|
- FFMPEG_PATH=/usr/bin/ffmpeg
|
|
- RECORDING_DIR=/recordings
|
|
- DELTACAST_PORT_COUNT=8
|
|
- SRT_ENABLED=true
|
|
- SRT_LATENCY=5000
|
|
- PORT=8000
|
|
- LOG_LEVEL=INFO
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8088:80"
|
|
depends_on:
|
|
- backend
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
recordings:
|
|
driver: local
|
|
hls:
|
|
driver: local
|