Short answers with pointers into the full docs. See the documentation index for everything.
A GStreamer media pipeline engine with a visual, web-based GUI. It builds, runs, and manages real-time media pipelines; the node-based editor is the interface for designing and controlling them. See the root README.
Strom is standalone, but Open Live (with Open Live Studio) uses Strom as a media backend over its REST/WebSocket APIs. See OPEN_LIVE_SETUP.md.
Both. The same egui frontend compiles to native and to WASM; the backend can run the native GUI or serve the web UI. See DEVELOPMENT.md.
The one-liner installer or Docker. See the root README Quick Start.
See DOCKER.md for the full reference, or OPEN_LIVE_SETUP.md for a guided, opinionated setup.
No, but it's highly preferred for production. Without one, video encoding falls back to software (x264 etc.), which works for small flows but doesn't scale. See DOCKER_GPU_SETUP.md.
Yes — ready-to-run host setup scripts live in
scripts/setup/, each with its own README:
nvidia/ (driver + container toolkit),
decklink/ (Blackmagic SDI/HDMI),
ndi/ (NewTek NDI SDK + plugin), and
ntp/ (chrony for clock sync). They are also bundled
inside the Docker images at /app/scripts/setup/, so you don't have to clone the repo —
see OPEN_LIVE_SETUP.md for how to extract them.
Strom is unauthenticated by default. Set a session login and an API key before exposing it to any untrusted network. See AUTHENTICATION.md.
Yes — PostgreSQL is supported for production. See POSTGRESQL.md.
Built-in TLS (STROM_TLS_CERT / STROM_TLS_KEY) with hot-reload, or terminate TLS at a
reverse proxy. See DOCKER.md.
Use the Vision Mixer block — broadcast-style preview/program switching with transitions, DSK, fade-to-black, PiP, and multiview. See VISION_MIXER_OPERATOR_GUIDE.md.
The Compositor is Strom's first-generation video compositor. It is deprecated and no longer maintained; the block is listed as "Video Compositor (deprecated)". Use the Vision Mixer — it's what Open Live uses. See VISION_MIXER_OPERATOR_GUIDE.md (the old compositor's writeup is in archive/COMPOSITOR_EDITOR.md).
Upload files to the media library, or download them from a URL, and play them with the
Media Player block. It decodes by default; set decode=false to pass the encoded
streams through. Record with the Recorder block, or the experimental Live Recorder
(builtin.liverecorder), which writes fragmented MP4 where a track that stops holds up none
of the others. See MEDIA_LIBRARY.md.
Yes. Local Input captures from the cameras and audio inputs the OS exposes, and Local Output plays audio on a local output device (PulseAudio/PipeWire, CoreAudio, WASAPI or ASIO). Pick the device from the live list in the inspector.
Yes, via CEF in the strom-full image. See HTML_RENDER.md.
H.264/H.265/AV1/VP9/VP8 with automatic hardware acceleration (NVENC, QSV, VA-API, AMF, VideoToolbox on macOS, Media Foundation on Windows, V4L2 on embedded Linux, software fallback). The Video Encoder block picks the best available encoder; its properties in the in-app inspector are the authoritative list.
Strom speaks the Model Context Protocol over HTTP at /api/mcp. See MCP.md.
Align them with PTP/NTP clocks and normalize_segment. See
STREAM_SYNCHRONIZATION.md.
One input arrives later than another input can be held back. The flow's warning names both
blocks, for example 'SRT Input' arrives 2000 ms late, but 'WHIP Input' can only be held back 1000 ms. Bring those two inputs closer: lower the late input's latency setting, or let the
other input buffer more if it has a setting for it. Raising queue sizes in front of the mixer
only hides the problem.
This was a known issue, now resolved: keep each whipserversrc in its own pipeline and set
drop-on-latency=true on live RTP inputs. Background in
archive/WHIP_ICE_DISCONNECT_INVESTIGATION.md.
Handled in our strom-full image via a mallinfo LD_PRELOAD shim. If you hit it on your own
gstcefsrc build, see archive/CEF_SIGILL_CRASH.md.
See DEBUGGING_SEGFAULTS_WSL2.md (applies beyond WSL2).
See DEVELOPMENT.md, then CONTRIBUTING.md.