// Industry
Real-time video engineering for streaming platforms
Always-on video that has to stay up and stay affordable — fleet capacity, transcode cost, and the failure modes that only appear at production framerate.
// The constants
The numbers this sector runs on
minutes a month
what one always-on source publishes: 60 × 24 × 30. The unit the whole bill is denominated in.
per source, per month
those minutes at LiveKit's published Scale-tier transcode rate of $0.015 per video minute, read from livekit.com/pricing on 2026-08-01 — before a single viewer connects. Rates move; price yours against the page.
encoder sessions
NVIDIA's concurrent cap on non-qualified cards, counted per system rather than per card — from their NVENC Application Note. It has moved between SDK versions (3 in Video Codec SDK 11, 8 in 13), so read it against the driver you run.
Not our measurements: arithmetic anyone can redo, and ceilings the vendor publishes — what the platform costs by construction. Each figure names its source.
The numbers we took ourselves are below.
// The problem
Why this is hard
Always-on video fails quietly. Nothing goes down, nobody is paged, and the complaint arrives as a shape rather than an error — a cost line that grew, or a viewer who says it has looked worse lately. By the time anyone books time to look, the system has usually been wrong for months, and being wrong slowly is what makes it expensive.
It resists debugging because the wrong number is rarely the obvious one. Three failures account for most of what we find, and not one of them announces itself:
A ladder nobody ordered
Transcoding re-encodes every publisher into layers whether or not a viewer ever asks for them — and on an always-on source that runs every minute of every month.
Stop re-encoding on ingress and let publishers send the layers. The saving tracks publish-minutes — dominant on an always-on source, rounding error on one that publishes for an hour a day. In exchange every publisher's encoder becomes a surface you own, and it fails quietly: the trade inverts once that list grows from outside.
A ceiling that is not CPU
Hardware encoders cap concurrent sessions, not cycles. Cross it and the encode can fall through to software with no log line: same output, several times the cost.
Size the box against the encoder's session ceiling as well as its cores, and take whichever runs out first. There are two ways up and they price differently: a card whose ceiling is higher, or the unsupported patch — which lives outside version control, is lost on any driver or kernel upgrade, and restarts every process holding the encoder library when applied.
A queue in the wrong unit
A buffer bounded in frames is a different depth at 60fps than at 30 — tuned in development, it runs too shallow in production and drops video while audio keeps flowing.
Bound the queue in time, sized against the longest handshake it must survive. It needs a number development cannot hand you — what that path carries under real load — and a size limit kept beside the time one, because a queue with no ceiling left on it is unbounded rather than generous.
// What matters here
The capabilities that move the needle
Real-Time AI Audit
Where the latency actually goes between the camera and the SFU, what breaks when the fleet reconnects at once, and what a minute of stream costs — as a prioritised, costed fix list.
Real-Time Rescue & Migration
A stack whose original team is gone, or a platform that no longer fits the bill: stabilised first, documented, then moved somewhere maintainable without a rewrite you can't afford.
Real-Time Ops
Capacity, latency and cost per stream tracked continuously — because an always-on fleet degrades silently, and a fallback nobody noticed bills for weeks.
RAG & Knowledge Systems
Grounded search across the operational record an always-on fleet accumulates — runbooks, incident history, transcripts — answering with a citation instead of a plausible paraphrase.
Compliance-Grade Recording
Retention schedules that actually expire, redaction applied on the live pipeline, and an access log that reconstructs who watched what — the obligations an always-on archive accumulates whether or not anyone planned for them.
// Deep dives
Going deeper for media & streaming
// Proof
Measured on our own hardware
cores per stream
a full 1080p re-encode; 0.13 to decode only. Synthetic 1080p25 H.264 through ffmpeg -benchmark, in a 4-core-capped container on an i9-14900, 2026-08-01.
encode latency, one live session
a live 1080p59 encode on our own production box while the GPU reported 8% utilisation, with seven encoder sessions still free. Enormous throughput headroom on a resource whose real limit is a session count — which is why neither number can tell you the box is filling. Re-verified 2026-08-01.
of video in a 3-buffer queue
at 59.94 fps. The same setting holds 100 ms at 30 — a queue bounded in frames is a different depth in wall-clock, which is the whole bug.
Not a client outcome and not a vendor figure — numbers we took, on hardware we can name, with the method published in full. The write-ups: How many cameras fit on one box — and the ceiling that hides until you cross it, Video not publishing, audio fine — the bug that only appears at production framerate.
// From the field
What we wrote about it
We turned SFU transcoding off — the transcode line went to zero and two things broke
The saving is real and it is one flag. What nobody writes down is the second job the transcoder was doing, and the third. Here is what breaks, how each failure presents, and the two-command audit that tells you in advance whether your sources survive the trade.
Video not publishing, audio fine — the bug that only appears at production framerate
One configuration value quietly means something different on every machine it runs on. Here is how it takes down a video track while leaving audio untouched, and why raising the framerate is what finally exposes it.
Mobile viewers stall while desktop is fine — why your SFU can't make them a lower-quality layer
Everyone assumes the media server adapts quality. It selects quality — among the encodings the publisher already produced. Here is what that changes for a fleet that publishes one stream: the four fixes that don't work, the three that do, and the second job the transcoder was doing for you until you switched it off.
Video is black on iPhones and fine everywhere else — the level your camera declares
Android plays it, desktop plays it, the iPhone shows a black rectangle and reports no errors. The cause is one number in the SPS, the tell is two counters in getStats, and the fix costs no CPU at all.
Your SFU bill is a transcode bill — the 24/7 publish nobody ordered
One multiplication tells you whether your media bill is a bandwidth problem or a transcoding problem — and it is almost always the second. Modelled at 1000 cameras against a published price list, the difference between two configurations is a six-figure monthly line, and the fix has a price nobody quotes.
How many cameras fit on one box — and the ceiling that hides until you cross it
Sizing a box for a camera fleet has two answers and people only compute one. Here are measured cores per stream for the software path, the hardware ceiling that stops you at eight sessions while the GPU sits at 8% utilisation, and what crossing it looks like — which is nothing at all.
You cannot load-test a real-time system the way you load-test an API
Load-testing a real-time system with a request-rate tool measures the wrong thing entirely. Here is what actually breaks — the restart nobody scripts, the leak a thirty-minute run cannot see, and the memory limit that fires before the number you were trying to measure.
Live captions on a call — where the latency actually comes from
Adding captions to a call sounds like a feature request and behaves like an architecture decision. The latency does not come from the network or the model — it comes from the window the recogniser needs before it will commit to a word, and from where you attached the tap.
// FAQ
Common questions
// Related
Related industries
Live Commerce
Live selling where latency decides whether the interaction works at all — and where the traffic arrives all at once, at a time you announced in advance.
Telemedicine
Video visits that connect the first time and stay up, and clinical answers that cite their source — the two places a telehealth product actually fails.
// Let's build
Building AI for media & streaming?
Tell us where you are. We reply within a day with a concrete next step.