An open source media server we have been building since 2009. This is what it does today, and what is coming, starting with an interface where you draw the pipeline instead of configuring it.
MistServer reads the protocols your encoders and cameras send, and serves the ones your viewers and partners ask for. It repackages between them as the stream passes through, so there is no separate transmuxing step to run.
Contribution and delivery protocols are both just settings
One ingest can feed many outputs at the same time
Passthrough for platforms that need the original signal
One ingest, many outputs, repackaged as it passes through.
SCTE-35 cue insertion
Insert timed ad-break cues into a live stream while it is running. A JSON request creates an SCTE-35 metadata track and MistServer carries the marker into its MPEG-TS outputs.
Create splice-out markers from a small JSON request
Carried in TS over UDP, TCP, SRT and RIST
Cue metadata travels alongside the audio and video
A JSON instruction becomes a timed cue carried beside the programme in each TS-based output.
Record, restream, clip and rewind
The same output engine can send a stream to another platform or write it to a file. Rules start those jobs automatically, a live buffer gives viewers instant rewind, and time-range parameters turn any available section into a clip.
Push to RTMP, SRT, RIST, WHIP, unicast or multicast targets
Automatic and scheduled recording with retry rules
In-memory rewind or disk-backed DVR for longer windows
Generate or download clips by media time or wall-clock time
One live buffer can feed destinations, recordings, rewindable playback and time-bounded clips.
Separate processes, shared memory
Each input, output and processing step is its own process. They share memory and nothing else, so one of them falling over does not take the server with it.
A crashed output leaves the others running
Restart or replace one component without touching the rest
Work spreads across cores
A fault stays where it happened. Nothing else in the pipeline goes down with it.
Runs on modest hardware
MistServer is native code built on our own libraries rather than a deep dependency tree, and most of what it needs is linked in statically. Installing it is small, and it is as comfortable on an ARM board or an appliance as on a rack server.
No runtime, interpreter or framework to install first
Runs well on ARM and embedded hardware
The same software across all of them
Native binaries with a deliberately small dependency set, mostly linked statically.
Wildcard streams
Set up a family of streams once instead of adding them one at a time. Anything matching the pattern starts when it starts sending, and goes away when it stops.
One entry covers any number of live streams
Serve a whole folder of files from a single entry
Nothing to add when a new encoder shows up
Set up a family of streams once. New ones appear when they start sending.
SDI and NDI
SDI and NDI go in and out of MistServer directly. A feed can arrive on a cable and leave over IP, or the other way round, without a gateway box in between.
DeckLink SDI on request today
AJA in the preview build, Dektec after that
NDI in and out across the production LAN
Baseband and IP meet in the server, with no gateway box in between.
Composer
Combine and mix audio and video into a single output. Grids, picture in picture, alpha layers and fallbacks, all changed while the stream is running.
Multi-camera grids and picture in picture
Alpha layering for overlays and graphics
Switch to a standby source when an input drops
Combine sources into one output: grids, picture-in-picture, alpha layers and automatic fallback, changed live without restarting the stream.
Encoding
An encoder built on libav that runs inside MistServer and covers the modern formats, in hardware or in software. It handles raw pixels as well as encoded ones, which is what SDI work needs.
Hardware and software encoding from the same configuration
Audio too: AAC to Opus lets one source feed both HLS and WebRTC
Raw and encoded pixel handling for SDI to IP
Built on libav, running inside MistServer. It also moves between raw and encoded pixels, which is what lets SDI and IP meet.
WebCodecs player
A player that passes codec data straight to the browser decoder. Much less to set up than WebRTC, latency in the same range, and it works over protocols WebRTC cannot use.
Simpler to implement than WebRTC
Latency in the same range
One of several options inside the player
Codec data goes straight to the browser decoder over an ordinary WebSocket.
Management interface and API
Everything MistServer does sits behind one JSON API, and the built-in web interface is a client of that same API. Anything you can click, you can script.
Streams, push targets, processes and clustering from either
A web interface built in, with no extra service to deploy
Served over HTTPS, with admin traffic kept out of viewer counts
The interface is a client of the same API your scripts use.
Load balancing and failover
MistServer includes a balancer for a group of MistServer nodes. It points each viewer at a healthy node near them, and takes a failed one out of rotation without disconnecting anyone.
Origin and edge are the same binary
Viewers routed by health and location
A node can fail without taking its viewers with it
The balancer coordinates; media flows directly between viewers and interchangeable MistServer nodes.
Automation and access control
Hooks fire at ingest, playback, stream, recording and server lifecycle events. They can notify another system or block while your code approves, rejects, reroutes or rewrites what MistServer does next.
Call an HTTP endpoint or any local executable
JWTs, stream keys and session-aware viewer checks
Rewrite incoming pushes, playback names and stream sources
Custom variables and external writers for unusual workflows
Monitoring and live statistics
Inspect streams, tracks, viewers, inputs and outputs while they are live. Read recent statistics through the API, follow status over WebSocket, or scrape the built-in Prometheus endpoint for long-term monitoring.
Prometheus-compatible metrics and published Grafana dashboards
Event webhooks for stream and connection changes
A live connections panel that can terminate a stuck session
Raw TS passthrough and demuxing
Keep an MPEG transport stream byte-for-byte intact for a downstream system while an optional demuxer exposes its audio, video and metadata tracks to the rest of MistServer at the same time.
Preserve private data and signalling MistServer does not interpret
Use the untouched multiplex and the parsed tracks side by side
Inspect and route individual tracks without giving up passthrough
Files, folders and playlists
Serve on-demand media from local storage, HTTP or S3-compatible sources through the same delivery protocols as live streams. A folder can become a catalogue and a playlist can run as a linear channel.
MP4, HLS, Matroska, Ogg, audio and transport-stream inputs
One folder-backed stream covers a whole library
Run files and playlists in simulated-live mode
Up next
Built and working their way to release. These reach the regular releases over the coming months, and we can hand you a build sooner if you need one.
Pipeline editor
A new management interface built around a canvas. Drop in a source, connect it to processing and destinations, and apply. MistServer writes the stream, process and push configuration for you, and every card shows whether it is live, idle or failing. You never have to open the rest of the interface.
Templates for the common jobs: stream to viewers, restream to a platform, record a camera, transcribe, detect, multiview
Presets and a guided setup for every part, so YouTube is a title and a stream key
A review before every apply, with the restarts it will cause spelled out
The interface in English, German and Spanish
A source, a processing step and destinations on a canvas. Connect them, apply, and MistServer writes the configuration. Live status shows on every card.
Caching
Caching for ingest and for segmented output. On ingest it makes segmented inputs more reliable. On output it serves segments that have not changed rather than building them again for every connection.
Segmented ingests survive a hiccup
Unchanged segments are served, not rebuilt
Biggest win when many connections want the same thing
Built once and handed out, instead of rebuilt for every connection that asks.
Device management
Cameras and capture devices are found automatically and managed from MistServer, with control travelling alongside the video instead of through a separate system.
ONVIF, VISCA, NDI, SDI and local A/V devices
On Axis cameras it can run on the camera itself
PTZ from an operator or from a script
Cameras are managed, not just ingested. ONVIF, VISCA and Axis control rides alongside the media path, so pan, tilt and zoom are part of the same system.
AI processing
Models run against the stream on your own machine and return their results as metadata. The model pack covers detection, segmentation, pose, depth, faces, moderation, audio analysis, OCR and transcription.
Parakeet for transcription, YOLO for detection
Moderation, face recognition, OCR and audio analysis
Runs locally through ONNX
Models run locally through ONNX and hand their results back as stream metadata.
Expanded SCTE-35
Broader cue handling beyond today's splice-out insertion for push inputs and TS-based outputs. The next step is to carry and create SCTE-35 across more of the ingest and delivery path.
Move beyond the current push-input limitation
Support more input and output combinations
Handle more than today's basic splice-out cue
Native S3
Send recordings and archives straight to object storage, with no folder-watching script sitting in between.
DRM
Multi-DRM for CMAF delivery, so protected content does not need a packaging chain of its own.
Low-latency CMAF and DASH
Work on the low-latency CMAF and DASH delivery paths.
Automatic TLS certificates
MistServer requests and renews its own certificates, so there is no proxy in front of it purely for TLS.
MPTS
Proper support for multi-program transport streams.
One-click cloud deployments
Cloud images and marketplace listings, so bringing up a node is a few clicks.
Thumbnails and sprite sheets
A better thumbnailer, and sprite sheets for scrub previews in your player.
Further out
Committed to, and further down the road.
VoD pipeline
Funded by an NLnet grant. Bringing on-demand up to the standard live already enjoys, including sharing assets between nodes so a VoD setup takes far less wiring.
OpenAI-compatible API
Point MistServer at any provider or stack that speaks the OpenAI API, for teams who would rather not run models on their own hardware.
HTTP/3 and Media over QUIC
A shared protocol that gives a CDN enough understanding of a stream to relay it. Publish once, and relays fan it out.
Ready when you are
Tell us what you are building
If something here lines up with what you are working on, we would like to hear about it.