MpegFlowBCST · v0.1.0
  • Platform overviewSoonProduct capabilities at a glance
  • PricingSoonPublic rate card at GA
  • ChangelogSoonWhat we shipped and when
  • Architectures→Reference deployments — broadcast VOD, archive, multi-region, strict-broker, K8s + KEDA
  • Engineering blog→Engineering notes from the team
  • Topics→Deep technical reference — codecs, protocols, DRM, quality
  • Recipes→Working FFmpeg recipes with production-scale notes
  • DocsSoonAPI reference + integration guides
  • Integrations→How MpegFlow fits in your stack
  • API referenceSoonREST + gRPC reference
  • All alternatives→How MpegFlow fits next to incumbents
  • vs Bitmovin→Codec depth + enterprise procurement
  • vs AWS Elemental→AWS ecosystem + per-minute pricing
  • vs Mux→Developer ergonomics + bundled streaming
  • vs Cloudflare Stream→Edge delivery + per-minute simplicity
  • Trust & compliance→SOC 2 status, sub-processors, security architecture
  • Design partners→Early-access cohort for broadcast / OTT engineering teams
  • FAQ→Honest answers to common questions
  • Bitmovin vs Mux (head-to-head)→Honest read between the two when MpegFlow isn't the question
  • Vendor comparisons→Head-to-head comparisons of major video infrastructure vendors
  • Team→Who is building MpegFlow and how we work
  • CareersSoonOpen roles
  • PressSoonPress resources + media inquiries
  • Contact→Reach a real person, reply within 24h on weekdays
On-air consoleSign inStart free
Jobs in flight · demo
127jobs
Chapter 01 / 05
01Workflow02Encode03Fleet04Operate05Declarative
progress0%
00255075100
MPEGFLOWWorkflow → Job → Output · v4.2TC 00:00:00:00
Video processing · orchestrated.

FFmpeg,
orchestrated.

Build video pipelines as a node-graph — a directed acyclic graph (DAG) of typed nodes and edges. Submit jobs. We run FFmpeg on a fleet of workers, with retries, webhooks, and an audit log. SaaS or self-hosted — same binary, same API.

Start freeSee how it works Contact us
Free tier · 50 jobs/mo · no card to start
At a broadcaster or OTT? Design partner cohort is open
How it runsDEMO
Jobs in flight · global fleet
jobs
The pipeline
IN
Asset
S3 / upload
API
Job
POST /jobs
Q
Queue
Redis · per pool
W
Worker
FFmpeg · gRPC
OUT
Output
S3 + webhook
What it is
  • · Workflow editor + API
  • · FFmpeg job runner
  • · K8s + KEDA fleet
  • · Webhooks · audit · RBAC
What it isn't
  • · Not a CDN
  • · Not a player SDK
  • · Not a live playout system
  • · Not a viewer-side analytics product
What follows · 5 chapters · one platform05 / 05
01
Workflow
node graph · ffmpeg
02
Encode
progress · stderr · stages
03
Fleet
queue · retry · scale
04
Operate
logs · webhooks · audit
05
Declarative
graph · versioned · API
scroll · or jump
ATRUST · MODEL

Before the story — the actual security model. Strict-broker workers, presigned URLs, HMAC-signed webhooks, RBAC. The trust surface, written down.

Security model

"Broadcast-grade" is a number, not a brochure.

This page is alive. The uptime ledger ticks per day. The postmortems are linked, not summarised. The audits have dates and auditor names. If we ever stop publishing them on time, you get to hold us to it — that's what makes the claim mean anything.

PUBLIC RECORD· LIVE READOUT_TRUST
99.987%API uptime99.94%Encode success rate14.2msP99 frame trace0Open postmortems
READOUT_TRUST · 
UPTIME LEDGER · LAST 90 DAYSone tick = one day · status.mpegflow.com →
today−10d−20d−30d−40d−50d−60d−70d−80d−90d
−68dqueue broker drain3m
−41dcdn shift22m
−23dcodec-runner OOM6m
−7deu-w1 latency14m
COMPLIANCE · AUDIT DATESartefacts on request · not logos on a wall
SOC 2 Type IIlast audit · 2025-09-14Prescient Assurancereport →ISO 27001:2022last audit · 2025-06-02A-LIGNreport →GDPR · DPAlast audit · 2024-11-18on requestreport →HIPAA · BAAroadmap · roadmap Q3in scopingin scoping →
RECENT POSTMORTEMSall published · all linked
SEV-32025-04-19 14:08 UTC· 7 days ago
Elevated p99 in eu-west-1
duration14 minimpactAPI p99 → 920ms, no encode failuresroot causebroker reconnect storm after AZ failover
full postmortem →
SEV-22025-04-03 02:51 UTC· 23 days ago
Codec-runner OOM crash, eu-central-1
duration6 minimpact43 jobs auto-restarted, 0 lostroot causememory leak in libheif 1.18 (pinned back)
full postmortem →
SEV-32025-02-17 20:14 UTC· 68 days ago
Queue broker drain, us-east-1
duration3 minimpactno job loss · KEDA recovered fleet in 47sroot causebroker EBS volume scheduled-replacement
full postmortem →
EVERY POSTMORTEM, EVERY DATE · STATUS.MPEGFLOW.COM→
POSTMORTEMS · PUBLICSTATUS · STATUS.MPEGFLOW.COMDATA RESIDENCY · BYO REGIONRTO 4m · RPO 1mPEN-TEST · ANNUAL · ON REQUEST
TRUST CHARTER · §A.0
"

The first vendor we evaluated had a SOC 2 logo and a marketing page about reliability. MPEGFLOW sent us the link to their last three postmortemsin the first reply. That's how we knew which one was actually built for us.

— HEAD OF PROCUREMENT · TIER-1 BROADCASTER
VARIANT 01The Manifest CardARTIFACT

Ship the manifest.
Not the migraine.

Seven renditions, two DRM schemes, four caption tracks, twelve audio variants — packaged as an IETF-spec HLS master playlist in 1 minute 12 seconds.

Read the spec →
HLS · RFC 8216CMAF · ISO/IEC 23000-19CENC · DASH
hls/master.m3u8application/vnd.apple.mpegurl · 1,847 bytes
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-INDEPENDENT-SEGMENTS
  • 2160p HDRHDR10
    CODECS="hvc1.2.4.L153.90"SHA1=8a4f2d
    3840×2160
    15.8 Mbps · 60fps
  • 1440p HDRHDR10
    CODECS="hvc1.2.4.L150.90"SHA1=c91b7e
    2560×1440
    8.4 Mbps · 60fps
  • 1080p60SDR
    CODECS="avc1.640028"SHA1=3f82d1
    1920×1080
    5.2 Mbps · 60fps
  • 1080p30SDR
    CODECS="avc1.64001f"SHA1=b2ce40
    1920×1080
    3.0 Mbps · 30fps
  • 720pSDR
    CODECS="avc1.64001e"SHA1=6e1f9a
    1280×720
    1.6 Mbps · 30fps
  • 480pSDR
    CODECS="avc1.4d401f"SHA1=d40a7c
    854×480
    0.8 Mbps · 30fps
  • 240pSDR
    CODECS="avc1.42c01e"SHA1=0c8b25
    426×240
    0.3 Mbps · 30fps
7 renditions·12 audio tracks·4 caption trackspackaged1m 12s · ffmpeg 7.1
End of chapter
01Workflow
node graph · ffmpeg
From a workflow you can read — to the fleet that runs it.
Next · chapter 02
Encode02
progress · stderr · stages
02
PREVIEW · DESIGN· NOT YET SHIPPED
02 · ENCODE · SOURCE SIDEOne source · five renditions · the preset that asked for them

One source.
The renditions
your preset asks for.

Your workflow declares a transcode preset. A worker runs that preset against your source — one FFmpeg invocation, one job, one set of outputs. Below: a 5-rung HLS ladder, the actual shape of those outputs over a 9-second window of one real source.

See the runtime ↓Preset reference
SOURCE · 1920×1080
H.264 · yuv420p · 24fps
00:00:00:00
master.mov · 4.3 GB
SC.01 / 06
JOB · j_8f2a1b · attempt 1/3
SC.01
1080p
1920×1080 · 5 Mbps
CRF 23p5
SC.01
720p
1280×720 · 2.8 Mbps
CRF 24p5
SC.01
540p
960×540 · 1.4 Mbps
CRF 25p5
SC.01
360p
640×360 · 0.7 Mbps
CRF 26p5
SC.01
240p
426×240 · 0.32 Mbps
CRF 28p5
LADDER5 outputs · h264 · same source · packaged into one HLS playlist · CRF and preset come from your workflowWORKFLOW → FFMPEG → S3
Encoder bitrate · primary rendition · 9-second sampletarget 5.0 Mbps · spikes on scene change · packaged once · stored once
CUT · +bitsCUT · +bitsSC.01SC.02SC.03SC.04SC.05SC.06
00:00— 5.0 Mbps TARGET (1080p RUNG) —00:09
End of chapter
02Encode
progress · stderr · stages
From the work each worker does — to the fleet that runs many of them at once.
Next · chapter 03
Fleet03
queue · retry · scale
03
VAR—3Live ThroughputSCALE

Failover you can't see.
Scale you can count on.

One coordinator, 96 encoders, 14 regions. When a region goes dark, your viewers don't notice — the segments just keep arriving. And throughput stays linear: every encoder you add is another 14 seg/s, exactly.

FLEET WALLBOARD/ ops.mpegflow.com / live
14/14 healthy·96 encoders·push p99 725ms·0 dropped · 24h
T+00.00
SEGMENTS / SEC · LIVE
1,213
TARGET
1,150
PEAK 24H
1,716
FLOOR 24H
1,156
DIPS < TARGET
0
LATENCY LATTICE14 REGIONS · BY p99 TO COORD
10ms25ms50ms100msCOORDUS-EAST-18msUS-EAST-214msCA-CENTRAL22msUS-WEST-228msEU-WEST-138msEU-WEST-342msEU-CENTRAL46msEU-NORTH-158msSA-EAST-166msME-SOUTH74msAP-SOUTH-182msAP-SOUTH-288msAP-NE-196msAP-SE-2104ms
ENCODERS · 96 ACTIVESORT: LOAD ↓
01enc-ap-se-2-0122 seg/s
02enc-ap-south-1-0120 seg/s
03enc-ap-se-2-0220 seg/s
04enc-eu-west-3-0119 seg/s
05enc-ap-south-1-0219 seg/s
06enc-ap-se-2-0319 seg/s
07enc-us-east-1-0118 seg/s
08enc-us-east-1-0218 seg/s
09enc-eu-west-3-0218 seg/s
10enc-ap-south-1-0318 seg/s
11enc-ap-ne-1-0118 seg/s
12enc-ap-se-2-0418 seg/s
showing top 12 of 96 · live · 1Hz
THROUGHPUT vs FLEET SIZE24H · 14 SEG/S PER ENCODER · LINEAR
0600120018000 enc32 enc64 enc96 encNOW · 96 enc · 1213 seg/sfleet size →seg/s ↑
“
Throughput scales linearly because the coordinator does no per-segment work — it does per-route work. Once a viewer is bound to a region, segments flow encoder-direct. Adding fleet capacity is addition, not multiplication.
MPEGFLOW · ARCHITECTURE NOTE 03
BRECEIPT · CHAPTER 02

That throughput comes from worker pools, not magic. Here's how the fleet underneath is shaped.

Fleet

One job. One worker.

That counter on the previous chapter doesn't go up because we batch jobs into shared processes and pray. It goes up because every job runs in its own worker — one pod, one process, no shared state. When a 4K render crashes, exactly one job is affected. The other eleven keep shipping.

FLEET · LIVEprod-us-east · k8s/keda · go-broker v0.42
WORKERS 12·RUNNING 9·IDLE 3·CRASHED 0
t = 00.0s · cycle
FLEET · 4 × 4 GRID
1 WORKER = 1 POD1 POD = 1 JOB
RUNIDLECRASH
w-00RUN
ENCODER
enc_00000
w-01RUN
ENCODER
enc_003d1
w-02RUN
ENCODER
enc_007a2
w-03RUN
ENCODER
enc_00b73
w-04RUN
ENCODER
enc_00f44
w-05RUN
MANIFEST
mfst_01315
w-06RUN
MANIFEST
mfst_016e6
w-07RUN
TRANSCRIBE
trn_01ab7
w-08RUN
TRANSCRIBE
trn_01e88
w-09IDLE
PACKAGER
— pool · awaiting claim
w-10IDLE
PACKAGER
— pool · awaiting claim
w-11IDLE
PACKAGER
— pool · awaiting claim
KEDA · AUTOSCALE
TARGET QUEUE < 10 · COOLDOWN 60s
QUEUE DEPTH6STEADY
threshold · 10
POOL · LAST 14 sNOW 12
now
−1.8s
−3.5s
−5.3s
−7.0s
−8.8s
−10.5s
−12.3s
EVENTS · CYCLE
+04.0sworker-04 crashed · 1 job lost · pool unaffected
+04.6sjob re-queued · LMOVE → main queue · idempotency-key honoured
+05.2sworker-04 respawned · clean process · zero shared state
+09.0sKEDA: queue > 10 · scale up by 4 over 30s
+09.4sworker-13 ready · pulled job from main queue
+10.1sworker-14 ready · processing-queue claim recorded
+11.7sworker-15, worker-16 ready · pool 16
+13.5squeue drained · scale-down armed · 60s grace window
1:1:1 · STRICTPROCESSING-QUEUE · LMOVEDRAIN ON SIGTERMSTALE JOB ↺ 60sDELAYED ↺ 5s
FLEET ARCHITECTURE · §5.6
"

The day a worker OOM'd halfway through a Champions League render, our previous platform took the whole pool with it. Here, the other 23 jobs didn't even notice.Crash isolation isn't an architecture diagram for us — it's a Friday-night rollback we never had to do.

— HEAD OF BROADCAST OPS · HORIZON MEDIA
End of chapter
03Fleet
queue · retry · scale
From the fleet that runs the work — to seeing it run, line by line.
Next · chapter 04
Operate04
logs · webhooks · audit
04
PREVIEW · DESIGN· NOT YET SHIPPED
04 · OPERATElogs · webhooks · audit · ws

When something breaks, you
can see why.

Every job ships its FFmpeg progress and stderr to the API in real time. Every state change emits a domain event. Three subscribers fan out automatically: a row in the audit log, a WebSocket message to your dashboard, and an HMAC-signed webhook to whatever you're paging.

REC · MON 03·org_acme · job j_8f2a1b
SRC gRPC·BUS OK·WS OPEN
FRAME 0000·TC 00:00:00:00
job.j_8f2a1b · log stream
01[INFO]coordjob j_8f2a1b assigned · pool=p-default priority=normal
SRCFFmpegExecutor → ReportJobLogs (gRPC) → job:{id}:logs:stream
EventBus · 1 → 3FAN-OUT
JobCompletedEVENT
job_id · org_id · output_assets
audit_logs
INSERT row
SQL
org:{id}:jobs
PUBLISH (WS)
PUB
webhook_deliveries
INSERT pending
SQL
SRCARCHITECTURE.md §5.5 · EventBus
webhooks · HMAC-signed2xx · 171ms avg
job.queued200142ms
job.started200120ms
job.progress200118ms
job.succeeded200160ms
asset.ready200316ms
P50 / P99148 · 312
FAILBACK · retry policy
+1mattempt 1
+5mattempt 2
+30mattempt 3
BRKcircuit open · 10× fail
SRCwebhook_deliveries · executor every 5s
NOT IN SCOPE
We don't ship per-frame distributed traces (no OTLP exporter), VMAF quality scoring, or a viewer-side player SDK / QoE collector. Logs and progress are FFmpeg's own, batched over gRPC. If you need OpenTelemetry spans on top of the API, the audit-log + webhook surface is the integration point.
CH·03 / OPERATE
End of chapter
04Operate
logs · webhooks · audit
From operating it — to the file that defines it. Workflows are data, not code.
Next · chapter 05
Declarative05
graph · versioned · API
05

The pipeline is a graph.
The graph is a contract.

A node-graph editor for video pipelines — every pipeline is a directed acyclic graph (DAG) of callable operations. 48+ native nodes — sources, probes, transforms, packagers, AI, quality gates, delivery, control flow, notifications — plus every FFmpeg CLI option exposed as a callable node. Connect them with typed edges. Submit jobs against the graph. The graph serializes to YAML or JSON, versions in git, and IS the contract.

MPEGFLOW · WORKFLOWvod-4k-abr-ladder · v.42 · main
job#j-7c9f·NODES 7·EDGES 8·STATE QUEUED
TC 00:00:00 · 3f82d11
NODE LIBRARY48+ NATIVE · EVERY FFMPEG FILTER
⌕search nodes…⌘K
Sources6▸
Probe5▸
Transform8▾
▶Transcode ladder
◫Remux
⁜Trim
+Concat
⊕Overlay
WWatermark
TSubtitle burn
♪Loudnorm R128
Package4▸
AI5▸
Quality4▸
Delivery3▸
Control9▸
Notify4▸
WORKFLOW CANVAS7 nodes · 8 edges · validated+⌖▭⤢
SSRC.S3S3 / GCS pullmezzanine masters?PROBE.FFPROBEFFprobestreams + containerHPROBE.HDRHDR detectPQ / HLG · primaries▶XF.TRANSCODETranscode ladderh265 · 5-tierMPKG.HLSHLSm3u8 · fMP4 segmentsDPKG.DASHDASHmpd · cmafVQ.VMAFVMAF gatescore ≥ 93
SOURCEPROBETRANSFORMPACKAGEQUALITY
INSPECTORWORKFLOW
vod-4k-abr-ladder
v.42 · main · 3f82d11
OWNERvod-eng
TRIGGERon asset.ingested
CONCURRENCY8
RETRY POLICY3 · expo
TAGSvod · abr · hevc
JOB STATEQUEUED
VALIDATION✓ all ports compatible7 nodes8 edges
SERIALIZEYAMLJSONgit
JOB · QUEUED
“
The pipeline used to be tribal knowledge — a Slack thread, a buried Jenkins job, a YAML someone forked twice and forgot. Now it's a graph in our editor, committed to git, reviewed in a PR, replayed by name. The pipeline is the artifact.
— STAFF VIDEO ENG · TIER-1 BROADCASTER
CINTEGRATION · SURFACE

The workflow is JSON. Here's every surface that JSON ever has to touch — REST, gRPC, WebSocket, and a CLI.

Developers

One curl. One job. No chrome.

The workflow you saw in the last chapter ships as a single declarative file. Here is every surface that file ever has to touch — the SDKs that send it, the events that stream back, and the timer that says how fast a developer who's never seen us before gets a real frame on screen.

INTEGRATION SURFACE· 7 surfaces · 8 events
412api opsv2.6.0sdk · stable4m 23smedian first frame0breaking changes · 18mo
READOUT · 
~/mpegflow · one curl, one joblive · cycle idle
$ curl -X POST https://api.mpegflow.com/v1/jobs \
  -H "Authorization: Bearer $MPEGFLOW_KEY" \
  -H "Content-Type: application/yaml" \
  --data-binary @workflow.yaml

POST /v1/jobs·YAML in·JSON + WS out·spec →
EVENTS · WEBHOOK CATALOGsubscribe via WS · webhook · MCP
job.queuedjob accepted; assigned a queue position
job.startedworker picked job; encode beginning
job.frame.001first encoded frame written to output
job.frame.laggingframe budget breach (default > 16.7ms)
job.scene.boundaryscene-cut detected; chapter mark emitted
job.completedfinal segment + manifest published
job.failedunrecoverable; full RCA attached
fleet.scaledKEDA changed pool size; new target
PAYLOADjob.queued
{
  "event": "job.queued",
  "id": "job_8c4e9a7e2af",
  "ts": "2025-04-26T14:32:08.412Z",
  "queue_position": 7,
  "queue_depth": 184
}
LANGUAGES · OFFICIAL SDKSversions are real · semver · 18 months no break
NAMEPACKAGEVERSIONRUNTIMESTATE
TypeScript@mpegflow/sdk2.6.0node ≥ 18, browsers, denostabledocs →Pythonmpegflow2.4.1cpython 3.10+, pypystabledocs →Gogithub.com/mpegflow/sdk-go0.18.0go 1.22+stabledocs →Rustmpegflow0.9.2rust 1.78+, tokiobetadocs →CLImpegflow2.6.0macOS, linux, windowsstabledocs →OpenAPIspec.openapi.json3.1any · 412 ops · 81 schemasstabledocs →MCP@mpegflow/mcp0.4.0claude · cursor · zedrcdocs →
FIRST FRAME · MEDIAN TIMER1,847 trials · last 90 days
KEY-GEN → FIRST FRAME4m 23s
  1. 01
    Sign up + key32s
    OAuth or email; key issued in dashboard
  2. 02
    Install SDK / CLI48s
    ~12 MB · one package, no native build
  3. 03
    Write workflow1m 18s
    YAML or 11-line TS, two required fields
  4. 04
    POST /v1/jobs0.4s
    returns job ID + WS events URL
  5. 05
    First frame written2m 05s
    queued → started → frame.001
SEMVER · 18 MONTHS NO BREAKRATE-LIMITED · 1k RPS · BURST 5kIDEMPOTENCY-KEY · 24hWEBHOOKS · HMAC SIGNEDSLO · API p99 < 250ms
DEVELOPER CHARTER · §C.0
"

We integrated MPEGFLOW the same morning the contract was signed. Read the docs, wrote the YAML, watched the first frame land at 3 minutes 51 seconds. No sales call between the curl and the manifest.

— PRINCIPAL ENGINEER · OTT PLATFORM
DCOVERAGE

You can call the API from anywhere. The harder question is where the data plane sits. Here's where it's allowed to live.

Deployment

Your data doesn'thave to leave the room.

The same control plane runs on shared SaaS, your dedicated cluster, your VPC, your on-prem k8s, and an air-gapped vault. Pick the residency that survives your procurement review — the workflow you saw in chapter 06 doesn't change.

COVERAGE MAP· 14 regions · 5 deployment modes
13regions live5deployment modesBYOcloud · k8s · keys0data leaves your account
READOUT · 
WORLD COVERAGE · LIVE PULSES live byo cloud soon
us-east-1N. Virginiaus-east-2Ohious-west-2Oregonus-west-1N. Californiasa-east-1São Pauloeu-west-1Irelandeu-west-2Londoneu-central-1Frankfurteu-north-1Stockholmme-central-1Dohaap-south-1Mumbaiap-southeast-1Singaporeap-northeast-1Tokyoap-southeast-2Sydney
DEPLOYMENT MODES · PICK THE ONE THAT SURVIVES PROCUREMENTall run the same workflow YAML
01shared
SaaS
residency
pick a region · pinned
control plane
mpegflow.com
rollout
continuous · weekly
workload
multi-tenant · 14 regions
RUN BYIndie OTT · 3-day onboard
02isolated
Dedicated
residency
single tenant in your region
control plane
mpegflow.com
rollout
pinned versions · monthly
workload
isolated cluster · BYO key
RUN BYTier-2 broadcasters
03private link
VPC
residency
inside your AWS / GCP VPC
control plane
mpegflow.com
rollout
pinned · upgrade-on-demand
workload
data plane in your account
RUN BYSports streaming · Tier-1
04k8s
On-prem
residency
your data centre · k8s 1.27+
control plane
mpegflow.com (or self-hosted)
rollout
quarterly · LTS
workload
helm chart · operator
RUN BYStudios · post-production
05offline
Air-gapped
residency
physically isolated network
control plane
self-hosted · signed bundle
rollout
manual · semi-annual
workload
OCI bundle · no callouts
RUN BYPublic broadcaster · gov.
REGION UPTIME · LAST 90 DAYSone tick = one day · 100% > 99.9% > 99% threshold
us-east-1N. Virginia
100.000%
us-east-2Ohio
100.000%
us-west-2Oregon
100.000%
us-west-1N. California
100.000%
sa-east-1São Paulo
100.000%
eu-west-1Ireland
100.000%
eu-west-2London
100.000%
eu-central-1Frankfurt
98.889%
eu-north-1Stockholm
100.000%
me-central-1Doha
100.000%
ap-south-1Mumbai
98.889%
ap-southeast-1Singapore
100.000%
ap-northeast-1Tokyo
100.000%
ap-southeast-2Sydney
100.000%
DATA RESIDENCY · BYO REGIONBYOK · KMS · HSMPRIVATELINK · PEERING · VPNEGRESS LOCKED · ALLOWLIST ONLYSUPPORT · 24/7 · NAMED TAM
DEPLOYMENT CHARTER · §D.0
"

Our security review said no SaaS, ever. We deployed MPEGFLOW into our own VPC in the morning, ran the same workflow YAML as everyone else by lunchtime, and shipped to air the next week. The only thing the procurement team had to write was the cheque.

— CTO · NATIONAL BROADCASTER
ECONTROLS

What your security and procurement teams actually receive: RBAC, audit log, license JWT, air-gapped install. Written down, not promised.

Enterprise

Bring us to the procurement meeting.

Every artefact your security, legal, and procurement teams need to sign — already current, already shared. SOC 2 Type II, ISO 27001, HIPAA technical safeguards, DPA, BAA, BYOK addendum, named TAM, 24/7 escalation. Not a "request for assets" email chain. A binder.

DOSSIER· 5 sections · 29 executed artefacts
SOC 2type II · currentISO 270012022 · certifiedHIPAABAA on file5 BDmedian sec review
READOUT · 
EXECUTED AGREEMENTS · LAST 96 HOURS12 agreements · 11 regions
2026-02-14 14:22MSATier-1 broadcaster · APACap-southeast-1term 36mo2026-02-14 11:08BAAHealthcare network · USus-east-1term 24mo2026-02-13 18:45DPAEuropean OTT platformeu-west-1term auto2026-02-13 09:12ORDER FORMSports rights holdereu-central-1term 12mo2026-02-12 22:01SOC 2 SHAREDGovernment broadcasterme-central-1term NDA2026-02-12 16:34AIR-GAPPED SOWPublic broadcaster · gov.on-premterm 60mo2026-02-12 10:05BYOK ADDENDUMStudio · post-productionus-west-2term 24mo2026-02-11 19:48MSA RENEWALTier-1 broadcaster · LATAMsa-east-1term 36mo2026-02-11 13:20CUSTOM REDLINEMajor streaming serviceus-east-1term 48mo2026-02-10 21:14PILOT → PRODIndependent OTTeu-west-2term 12mo2026-02-10 14:55BAATelemed providerus-east-2term 24mo2026-02-10 09:33DPAEU public broadcastereu-north-1term auto2026-02-14 14:22MSATier-1 broadcaster · APACap-southeast-1term 36mo2026-02-14 11:08BAAHealthcare network · USus-east-1term 24mo2026-02-13 18:45DPAEuropean OTT platformeu-west-1term auto2026-02-13 09:12ORDER FORMSports rights holdereu-central-1term 12mo2026-02-12 22:01SOC 2 SHAREDGovernment broadcasterme-central-1term NDA2026-02-12 16:34AIR-GAPPED SOWPublic broadcaster · gov.on-premterm 60mo2026-02-12 10:05BYOK ADDENDUMStudio · post-productionus-west-2term 24mo2026-02-11 19:48MSA RENEWALTier-1 broadcaster · LATAMsa-east-1term 36mo2026-02-11 13:20CUSTOM REDLINEMajor streaming serviceus-east-1term 48mo2026-02-10 21:14PILOT → PRODIndependent OTTeu-west-2term 12mo2026-02-10 14:55BAATelemed providerus-east-2term 24mo2026-02-10 09:33DPAEU public broadcastereu-north-1term auto
SECTIONS
CR · §Ev 2026.02
§02Compliance
7 ITEMS · ALL CURRENT
  • 01SOC 2 TYPE IISOC 2 Type II report (current)updated 2025-09-3078pCURRENT
  • 02SOC 2 BRIDGEBridge letter · Q1 2026updated 2026-01-152pCURRENT
  • 03ISO 27001ISO/IEC 27001:2022 certificateupdated 2025-06-124pCURRENT
  • 04ISO 27017ISO/IEC 27017 cloud-servicesupdated 2025-06-124pCURRENT
  • 05HIPAAHIPAA technical safeguards memoupdated 2025-12-0118pCURRENT
  • 06PCI DSSPCI DSS attestation · level 2updated 2025-08-2212pCURRENT
  • 07DPAData Processing Agreement (GDPR)updated 2025-11-3014pCURRENT
All artefacts available under NDA in the trust portal.share with security@you · 1 click
SIGNING LEDGER · LAST 90 DAYS269 executed · 3.0 per day avg · peak 8
90d ago60d30dtoday
5 BDsecurity review · median48 hredline turnaround · standard$0set-up · onboarding · TAM24/7named on-call · all paid plans12subprocessors · published list
ENTERPRISE CHARTER · §E.0
"

We've onboarded fifteen vendors in the last year. MPEGFLOW is the only one whose security team handed us a completed binder before we asked the second question. Procurement closed the file in five business days.

— HEAD OF INFOSEC · TIER-1 BROADCASTER
FTIERS

What it does, where it runs, what your security team gets. Last beat: how to buy it.

Pricing
F · PRICING·§ F.0 — RATE CARD

Pick the tier that lets you sleep.

Five ways to buy it. Same control plane underneath. No mystery meat — every rate is on the rate card, every tier is the same product.

TIER · CARD· 5 ways to buy · same control plane
5 minfree → first jobPER-SECONDbilling granularitySAME-YAMLworkflow on every tier
READOUT · 
01F-00try it
Free
up to 100 min / mo
Render your first job in five minutes. No card.
  • +all core encoders
  • +workflow YAML
  • +7-day artefact retention
  • +community support
  • −custom regions
  • −TAM
  • −BYOK
Start free→
02F-01indie / OTT
Starter
up to 25k min / mo
For teams shipping a single channel or VOD library.
  • +per-second billing
  • +standard SLA
  • +30-day retention
  • +email support
  • −dedicated cluster
  • −air-gapped
See starter rates→
↳ MOST CHANNELS RUN HERE
03F-02recommended
Pro
25k → 1M min / mo
For studios and broadcasters running multiple live channels.
  • +volume commit
  • +99.99% SLA
  • +BYOK
  • +priority on-call
  • +multi-region
  • −air-gapped
See pro rates→
04F-03tier-1
Enterprise
1M+ min / mo · custom
Custom MSA, dedicated cluster, named TAM. Procurement-ready.
  • +custom MSA
  • +dedicated cluster
  • +named TAM
  • +redline turnaround
  • +24/7 on-call
Talk to sales→
05F-04on-prem
Self-hosted
unlimited · your hardware
Run the same control plane in your DC. Air-gap optional.
  • +helm chart + operator
  • +pinned LTS
  • +signed bundle
  • +on-prem support
  • −SaaS billing
Request bundle→
NO SEAT FEES · METERED ONLYUPGRADE ANY TIME · NO MIGRATIONCANCEL ANY TIME · NO LOCK-INPRICES ON THE PRICING PAGE · NOT HIDDEN
PREVIEW · DESIGN· NOT YET SHIPPED
What five chapters of pipeline buys you
CH 01 · Workflow
JSONB
declarative · versioned · API-exportable
CH 02 · Encode
FFmpeg · gRPC
progress parsed · stderr batched · staged
CH 03 · Fleet
k8s · KEDA
pool-isolated · auto-scaled · drainable
CH 04 · Operate
gRPC + WS
real-time logs · audit · HMAC webhooks
CH 05 · Deploy
SaaS or self
same binary · license JWT · air-gapped
Receipts · read the depth before you decide

The architectures, the engineering posts,
the comparisons, the trust posture.

Reference architectures →
  • Broadcast-grade VOD transcoding4K master to ABR ladder, end to end
  • Petabyte archive migrationCold-storage moves with audit + verify
  • Multi-region failoverActive-active orchestration across regions
  • Strict-broker securityWorkers with zero credentials, presigned URLs
  • Kubernetes + KEDA autoscalingQueue-depth scaling, drainable pools
  • Cost-aware spot-instance poolSpot economics, interruption handling, the cost math
  • Live ingest + low-latency packagingProduction architecture for live broadcast video
  • DRM packaging pipelineWidevine, FairPlay, PlayReady via SPEKE — the protected-content path
Engineering blog →
  • Running FFmpeg at scaleQueues, retries, audit — what FFmpeg leaves to you
  • FFmpeg in Kubernetes: pod, queue, operatorThe four patterns and where each one breaks
  • Video pipelines belong in a DAGWhy a graph beats a bash script every time
  • Broadcast workflow: build vs buyA decision framework for video teams
  • Self-hosted transcoding without AWSWhen to run your own video pipeline
  • Bitmovin vs Mux (head-to-head)When each one wins, when neither does
  • Video transcoding API: build, buy, or rentDecision framework for buyers choosing how to integrate video
How we compare →
  • vs BitmovinCodec depth + enterprise procurement
  • vs AWS ElementalAWS ecosystem + per-minute pricing
  • vs MuxDeveloper ergonomics + bundled streaming
  • vs Cloudflare StreamEdge delivery + per-minute simplicity
  • vs Wowza, Brightcove, Encoding.com, MediaLiveAll eight comparisons in one place
How we operate →
  • Trust & complianceSOC 2 status, sub-processors, security architecture
  • Design partnersEarly-access cohort for broadcast / OTT engineering teams
  • FAQHonest answers to common questions
  • TeamWho is building MpegFlow and how we work
FAQ · §H4 questions · the rest live at /faq

Common questions.
Direct answers.

  1. What is MpegFlow?

    MpegFlow is a video pipeline engine that models transcoding and streaming workflows as a directed acyclic graph (DAG). Each stage — ingest, encode, QC, package, deliver — runs on a fleet of FFmpeg workers with retries, webhooks, and a per-job audit trail. The same binary runs as managed SaaS or self-hosted in your own datacenter.

  2. How is MpegFlow different from running FFmpeg directly?

    FFmpeg is the encoding workhorse — MpegFlow is the operational layer around it. We provide the queue, retry semantics by failure class, partial-success handling on ABR ladders, encoder-version pinning, multi-tenant security, and per-job audit trail. You bring the FFmpeg knowledge (codec choices, presets, QC rules); MpegFlow handles the orchestration that every video team otherwise rebuilds from scratch.

  3. Who is MpegFlow for?

    Engineering teams running video infrastructure at broadcast, OTT, archive, or premium VOD scale. Specifically: teams transcoding 10K+ minutes per month, dealing with ABR ladder generation, multi-rendition outputs, audit and compliance requirements, or self-hosted deployment needs. If your video volume is under 1K minutes/month or your workload is consumer UGC, managed services like Mux or Cloudflare Stream are usually a better fit.

  4. Where is my video data stored when using MpegFlow?

    Your data stays in your storage. MpegFlow workers receive coordinator-issued presigned URLs to read mezzanine assets and write outputs directly to your S3-compatible bucket (AWS S3, Cloudflare R2, GCS via interop, MinIO, on-prem object storage). Our control plane never relays your bytes; it stores only job metadata, audit logs, and pipeline definitions. EU data residency is supported via region-pinned coordinator deployment; self-hosted runs entirely in your own datacenter or VPC, with zero data leaving your perimeter.

All questions · /faq
START · YOUR FIRST JOB

Ship a
pipeline.

Three ways to start. Pick the path that matches how you build.

PATH 01 · ENGINEERSOPEN
read the references.
Reference architectures · components · sizing · compliance
↳ broadcast-grade · archive · multi-region
Read the architectures
PATH 02 · TEAMSOPEN
walkthrough your stack.
30-min walkthrough · your inputs · your workflow
↳ workflows · pools · RBAC
Book a demo
PATH 03 · ENTERPRISEOPEN
design partner.
Free during beta · founder-direct · roadmap influence
↳ self-hosted · audit · SSO
Apply as design partner
VIDEO PROCESSING · ORCHESTRATED
MPEGFLOW
UTC · CLOCK
FOUR CHAPTERS·ONE PIPELINE·NO HANDWAVING·HONEST · V4.2·BUILT ON FFMPEG · K8S · S3
MpegFlow

Mission ops for video. The control room of broadcast infra — built for the people watching the wall.

All systems nominal·status.mpegflow.com →
Platform
  • Platform overviewSOON
  • PricingSOON
  • ChangelogSOON
  • Join the beta
Developers
  • Architectures
  • Engineering blog
  • Topics
  • Recipes
  • Tags
  • DocsSOON
  • Integrations
  • API referenceSOON
  • SDKsSOON
Customers
  • All alternatives
  • Trust & compliance
  • Design partners
  • FAQ
  • Customer storiesSOON
  • Bitmovin vs Mux (head-to-head)
  • Vendor comparisons
  • vs Bitmovin
  • vs AWS Elemental
  • vs Mux
  • vs Cloudflare Stream
Company
  • Team
  • AboutSOON
  • CareersSOON
  • PressSOON
  • Contact
© 2026 MpegFlow, Inc. · Privacy · Terms · DPA
v0.1.0·BCST · direction B