This commit is contained in:
chk
2026-06-07 17:00:43 +02:00
parent 39fa6d07f5
commit d9cfa7e974
13 changed files with 744 additions and 62 deletions

View File

@@ -62,8 +62,12 @@ services:
- /dev/v4l/by-id/usb-046d_0825_3BB3FE20-video-index0:/dev/video0 # cam0 C270 (046d:0825)
- /dev/v4l/by-id/usb-046d_081b_342D4F40-video-index0:/dev/video2 # cam1 C270 (046d:081b)
- /dev/v4l/by-id/usb-046d_HD_Pro_Webcam_C920_9C5591DF-video-index0:/dev/video4 # cam2 C920
# GPU-Renderknoten für H.264-Encoding (VAAPI Intel/AMD). Nur nötig, wenn eine
# Kamera encode='h264' nutzt. Auf der Intel-Box bestätigt: /dev/dri/renderD128.
- /dev/dri:/dev/dri
group_add:
- video
- render # Zugriff auf /dev/dri/renderD128 (VAAPI). GID via `getent group render`.
environment:
- NODE_ENV=production
- PORT=8444
@@ -75,8 +79,21 @@ services:
# - HIRES_FPS=15
# - ENCODE_MODE=copybsf # copybsf = Bitstream-Copy, niedrige CPU (Default)
# # mjpeg = Re-Encode (~50%, Fallback falls copybsf zickt)
# # h264 = GPU-H.264 → MSE (Bandbreite sparen, braucht GPU)
# - ON_DEMAND=true # Live nur bei Zuschauern (Default); 'false' = dauerhaft an
# - IDLE_GRACE_MS=15000 # Karenz nach letztem Zuschauer vor dem Stop
#
# ── H.264-Hardware-Encoding (nur relevant für encode='h264') ──────────────
# - GPU=intel # intel|amd → VAAPI (gemeinsamer Pfad) · none → libx264 (CPU-Test)
# # → HIER die Maschine wählen: 'intel' (UHD 630) oder 'amd' (680M)
# - HWENC=vaapi # vaapi|qsv|libx264 Encoder erzwingen (überschreibt GPU)
# - HWENC_DEVICE=/dev/dri/renderD128 # VAAPI/QSV-Renderknoten
# - H264_BITRATE=3M # Zielbitrate
# - H264_GOP= # Keyframe-Abstand (Default ~2×fps); kleiner = schnellerer Einstieg, mehr Bitrate
# - H264_PROFILE=main # constrained_baseline|main|high (muss zum Treiber passen)
# - H264_FRAG_MS=200 # fMP4-Fragmentlänge in ms
# - H264_JPEG_FPS=2 # Bildrate des MJPEG-Nebenausgangs (für /api/snapshot)
# - H264_MSE_CODEC= # MSE-Codec-String überschreiben, falls der Browser meckert (z.B. avc1.640020)
# ── Netzwerk ────────────────────────────────────────────────────────────────────
# Externes, bereits existierendes Bridge-Netz (vom Stack "approbot"). Wird hier nur