# ZLMediaKit Configuration for Track Verticks # Mounted into the container at /opt/media/config.ini # Reference: https://github.com/ZLMediaKit/ZLMediaKit/wiki/config.ini [api] # API secret — must match ZLM_API_SECRET env var secret=trackverticks-zlm-secret-2026 # Enable API debug logging (disable in production) apiDebug=0 # Default vhost defaultVhost=__defaultVhost__ [http] port=80 ssl_port=443 # Root path for HLS segment serving rootPath=/opt/media # Send-file buffer size (bytes) sendBufSize=65536 # Max concurrent connections maxConnections=10000 [rtsp] port=554 [rtmp] port=1935 [rtp_proxy] port=10000 [record] # Base directory for recordings (inside container) # Subdirectories: /opt/media/record/{app}/{stream}/ appPath=/opt/media # ─── Hooks (webhooks sent to NestJS backend) ────────────────────────────────── [hook] enable=1 timeoutSec=10 # Called when a recording MP4 file is completed (TV-0057) # The backend validates X-ZLM-Secret header for authentication on_record_mp4=http://backend:3001/api/v1/internal/webhooks/zlm/on-record # Called when a new stream is published (optional — for future use) # on_publish=http://backend:3001/api/v1/internal/webhooks/zlm/on-publish # Called when a stream is stopped (optional — for future use) # on_stream_none_reader=http://backend:3001/api/v1/internal/webhooks/zlm/on-stream-idle # ─── General ────────────────────────────────────────────────────────────────── [general] # Max track count per stream (video + audio) maxStreamWaitMS=10000 # Enable HLS recording by default for all streams? (0 = off, 1 = on) # Leave off — recording is triggered per-stream via API hls_save_path=0