AWS MediaConvert vs Cloudflare Stream.
Honest side-by-side: where each one wins, the feature matrix that matters, pricing shape, and migration paths between them.
AWS MediaConvert wins when you're already deep in AWS — IAM, S3, Lambda triggers, CloudFront delivery integrate natively. Cloudflare Stream wins when you want managed encoding + storage + global edge in one product on Cloudflare's platform. The decision often splits on which cloud you've consolidated on.
You're already deep in AWS
IAM, S3 events, Lambda triggers, CloudWatch dashboards, SQS — MediaConvert sits in this stack natively. If your operational primitives are AWS-shaped, the integration cost of going elsewhere is real.
Your billing/procurement is via AWS
Many enterprises consolidate vendor spend into AWS for procurement and compliance reasons. MediaConvert benefits from that umbrella; everything else gets compared against it.
Your workload fits "submit job, get output" cleanly
For batch transcode of stable formats — VOD libraries, archive ingest — MediaConvert's job-shape API is simple and well-debugged. If you don't need per-stage control, you're paying for indirection you're not using.
You want zero infra ops
MediaConvert has no servers to scale, no queues to tune. For teams that genuinely don't want to know about the layer below, it disappears.
You want video + delivery + storage from one vendor
Cloudflare Stream bundles encoding, storage, and a global CDN. If you don't want to operate any of those layers, the simplification is real. We don't bundle delivery; we orchestrate transcoding against your storage.
You're already on Cloudflare's edge
If your application runs on Cloudflare Workers + R2 + Pages, Stream sits naturally in that stack with shared auth, shared billing, and shared observability. Adding a separate transcoding vendor is friction you may not need.
Time-to-first-video is the priority
Upload, get a player URL, embed. That whole flow is minutes on Cloudflare Stream. If you're building a product where video is one feature among many and you don't want to learn the encoder, Stream is the right fit.
Your volume fits per-minute economics
Cloudflare's pricing is straightforward and competitive at small-to-mid volume. If your monthly minutes are under ~500K, the per-minute model usually wins on operational cost vs running your own fleet.
| Feature | AWS MediaConvert | Cloudflare Stream |
|---|---|---|
| Pipeline model | Single-job submission API | Upload → encoded renditions → playback URL |
| Cloud coverage | AWS only | — |
| Pricing model | Per-minute of output, by tier | Per-minute stored + per-minute delivered |
| Self-hosted | Not available | Not available |
| Audit trail | CloudTrail + CloudWatch (correlation required) | Asset-level events |
| Codec coverage | H.264/HEVC/VP9/AV1 (AV1 limited) | H.264 + AV1 (limited HEVC) |
| DRM packaging | SPEKE-based (DRMtoday, EZDRM, etc.) | — |
| Live streaming | Separate product (MediaLive) | Live ingest + low-latency HLS supported |
| Triggers | S3 events, EventBridge, API | — |
| Compliance | AWS-wide certs (SOC 2, ISO 27001, HIPAA, etc.) | SOC 2, GDPR (Cloudflare-wide) |
| Vendor lock-in | High (AWS-native primitives) | — |
| Encoder visibility | — | Abstracted |
| Edge delivery | — | Bundled (Cloudflare CDN, 320+ POPs) |
| Storage | — | Cloudflare-managed (in their infra) |
| DRM | — | Signed-URL only (no DRM packaging) |
AWS MediaConvert
List prices in `us-east-1`: roughly $0.0075/min (Basic, up to 1080p), $0.015/min (Professional), $0.030/min (Pro 4K), $0.075/min and up (4K HDR / advanced). Per-minute of output, summed across renditions. A 60-min input → 5-rendition Professional ladder ≈ $4.50/job in transcode alone.
Cloudflare Stream
Cloudflare Stream lists at roughly $5 per 1,000 minutes stored and $1 per 1,000 minutes delivered. A library of 100,000 minutes streaming 200,000 minutes/month ≈ $700/month. Pricing scales linearly; verify current rates at cloudflare.com/products/cloudflare-stream/pricing.
MediaConvert jobs are JSON specs against a defined schema. We have a parser that maps common MediaConvert job templates to MpegFlow DAG manifests for the most-used patterns (single-input H.264/HEVC ABR ladders, captions sidecar, simple watermarking). Complex jobs with conditional logic require a manual port. Talk to us during beta enrollment if migration scale matters for your decision.
Cloudflare Stream is asset-shaped: upload, get URL. Re-creating that shape in MpegFlow is a small DAG (probe → encode-ladder → package → emit-to-bucket) plus your existing CDN. The harder migration is delivery — Stream bundles the CDN; with MpegFlow you keep delivery on your existing CDN (Cloudflare, Fastly, Akamai, or self-hosted via Varnish/nginx). Talk to us during onboarding for the specific Stream → MpegFlow + CDN shape.
If neither AWS MediaConvert nor Cloudflare Stream fits — usually because you need encoder visibility AWS MediaConvert or Cloudflare Streamdoesn't expose, multi-cloud parity, or self-hosted deployment — MpegFlow is the orchestration layer between your application and FFmpeg. Same binary runs as managed SaaS or self-hosted. See the dedicated MpegFlow vs AWS MediaConvert and MpegFlow vs Cloudflare Stream pages for the third-option view.
We work with both kinds of teams.
Beta cohort design partners come from both ends of this comparison — teams migrating off managed services for cost / control reasons, and teams choosing not to consolidate on a single vendor at all. Real conversation, no sales theater.