One container per channel. Built like capture/build-with-decklink: NDI + DeckLink SDKs fetched at build, runs --privileged with Xvfb for the GL context where no real display is present. Components: - entrypoint.sh: Xvfb + CasparCG launch, creates /media/live/<CHANNEL_ID> - src/amcp.js: TCP AMCP client - src/playout-manager.js: channel lifecycle, playlist walk via LOADBG AUTO for gapless transitions; primary consumer (decklink/ndi/srt/rtmp) plus a second FFMPEG HLS consumer (~600 kbps, 2s segments) for the UI preview - src/index.js: HTTP shim — /channel/start, /playlist/load, transport - frame-rate helper picks fps from video_format (59.94 → 60000/1001) so SEEK / LENGTH frame math is correct |
||
|---|---|---|
| .. | ||
| capture | ||
| mam-api | ||
| node-agent | ||
| playout | ||
| premiere-plugin | ||
| premiere-plugin-uxp | ||
| web-ui | ||
| worker | ||