FFmpeg in the cloud vs running FFmpeg yourself: total cost of ownership

Your FFmpeg server costs about $80 a month on paper. The real number is closer to $500 once you count the engineer who babysits it. That gap is the whole story of self-hosted video processing, and it's why the "just run FFmpeg yourself" math almost never survives contact with a growing queue.
Quick answer: For FFmpeg cloud vs self hosted cost, self-hosting looks cheaper only if you ignore engineer time. A single t3.large transcode box runs about $60/month, but the DevOps hours to patch, scale, monitor, and debug it add $100 to $480/month of loaded engineering time. A usage-based FFmpeg API like FFmpeg Micro shifts that to a per-job price with no idle servers and no on-call, so it wins below a few hundred hours of monthly encode volume.What does self-hosting FFmpeg actually cost?
Self-hosting FFmpeg's total cost of ownership is the server, plus storage, plus egress, plus the human who keeps it alive. Most cost comparisons stop at line one. That's the mistake.
Here's the honest breakdown for a small pipeline processing a few hundred videos a day on AWS.
| Cost line | Self-hosted (monthly) | Notes |
|---|---|---|
| Compute (one right-sized box, baseline plus burst) | ~$80-$150 | Idle most of the day, still billed |
| Storage (S3, 500 GB) | ~$12 | Inputs plus outputs plus intermediates |
| Egress (1 TB out) | ~$90 | $0.09/GB after the free tier |
| Monitoring (CloudWatch, logs) | ~$20 | Metrics you'll actually need |
| Engineer time (1-4 hrs/mo) | $100-$480 | Most months are quiet; a bad one costs more |
| Total | ~$300-$750 | The person is the cost, not the server |
The compute is the small part. The person is the cost. A backend engineer runs $100 to $120 an hour fully burdened, and a steady self-hosted box needs 1 to 4 hours in a normal month: an hour or two watching usage and logs, plus the occasional afternoon on a scaling tweak or a weird-input bug. The big incidents are real (a codec upgrade, a full disk at 2 a.m., a queue that backs up in a spike), but they are quarterly surprises, not a monthly tax, so amortized they stay inside that range.
Why is FFmpeg cheap to install but expensive to run?
FFmpeg the binary is free. FFmpeg the production service is not. The cost lives in everything wrapped around the transcode call, and none of it shows up when you test on your laptop.
Run this locally and it works in a second:
ffmpeg -i input.mp4 -vf "scale=1280:720" -c:v libx264 -crf 23 output.mp4
Now make that survive production. You need a job queue so requests don't block, a worker pool that scales with load, retry logic for corrupt inputs, a storage layer for inputs and outputs, timeouts so a 4K file doesn't pin a core for 20 minutes, and alerting for when any of it breaks. That's a media microservice, and you're now maintaining it forever.
The same job as one API call:
curl -X POST https://api.ffmpeg-micro.com/v1/jobs \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation": "transcode",
"input_url": "https://example.com/input.mp4",
"options": { "width": 1280, "height": 720, "video_codec": "h264", "crf": 23 }
}'
No queue to run, no workers to scale, no server to patch. The response gives you a job ID; you poll or take a webhook, then download the output. The infrastructure that ate your engineer's afternoons is now someone else's problem. We wrote up why serverless platforms make this worse, not better, in the FFmpeg on AWS Lambda layer-size and timeout problem.
The hidden costs nobody puts in the spreadsheet
The line items that sink self-hosted TCO are the ones that don't appear until you're already committed. These are the real killers.
- Egress fees. AWS charges about $0.09/GB to move data out. Process 5 TB of video a month and that's ~$450 in bandwidth alone, separate from compute. Cloud egress on video pipelines scales with your output, not your effort.
- Provisioning for peak. Video load is spiky. You size the server for your worst hour, then pay for that capacity 24/7. Average utilization on a dedicated transcode box is often under 20%.
- On-call. A queue that backs up on Saturday is a person's weekend. That cost is real even when it doesn't hit a P&L line.
- Codec drift. New format, new FFmpeg version, new build flags. AV1 and H.265 encoding are slow and CPU-hungry; a single AV1 job can run 5 to 10x longer than H.264, which changes your whole capacity plan.
- The bus factor. One engineer knows how the pipeline works. When they leave, the knowledge leaves. We cataloged the platform-specific version of this pain in self-hosting FFmpeg on Railway, Render, Fly.io, and DigitalOcean.
A usage-based API collapses all six into one number: price per job. You pay for work done, not capacity held, and the egress, scaling, and patching sit on the provider's side of the line.
When self-hosting is actually cheaper
Self-hosting wins at sustained high volume with a team that already runs infrastructure. If you're transcoding thousands of hours a day, own your egress path with a CDN deal, and have SREs on payroll who'd otherwise be idle, a fleet of GPU encode boxes beats per-minute API pricing. AWS Elemental MediaConvert, Google Transcoder API, and a raw EC2 fleet all make sense at that scale.
The crossover is roughly a few hundred processing-hours a month. Below it, an API is cheaper because you're not paying for idle servers or a full-time babysitter. Above it, the fixed cost of a real media team amortizes and marginal compute gets cheap.
Be honest about which side you're on. A faceless-channel builder assembling 200 clips a night does not need a Kubernetes video cluster. A streaming platform ingesting 10,000 hours a day should not be calling a per-job API for its core pipeline. Most automation builders and small SaaS teams are firmly in the first camp and self-host anyway, out of habit.
Cloud API vs self-hosted: the ROI in one view
The return on a video API is measured in engineer-hours reclaimed, not cents per minute saved.
| Factor | Self-hosted FFmpeg | FFmpeg Micro API |
|---|---|---|
| Servers to run | Yes | None |
| Scales with load | You build it | Automatic |
| Egress fees | Yours | Included in job price |
| On-call burden | Your team | Provider |
| Codec/version upkeep | Manual | Managed |
| Time to first working job | Days | Minutes |
| Pricing shape | Fixed + idle | Usage-based, free tier |
FFmpeg Micro gives you the full FFmpeg toolkit (transcode, compress, caption, watermark, compose, audio) as one API call, with a free tier to start and usage-based pricing after. Compare the numbers against your own EC2 bill on the pricing page.
FAQ
Is it cheaper to self host FFmpeg?
Only above a few hundred processing-hours a month, and only if you already employ people who run infrastructure. Below that, the fixed cost of one engineer maintaining the pipeline (roughly $100 to $480/month in loaded time) outweighs the compute savings, so a usage-based API is cheaper.
How much does running FFmpeg on AWS cost?
The compute is small: a t3.large running 24/7 is about $60/month. The trap is everything around it. Add S3 storage, ~$0.09/GB egress, CloudWatch monitoring, and 1 to 4 hours of engineer time, and a modest AWS FFmpeg pipeline lands near $300 to $750/month all-in.
What are the hidden costs of self-hosting video transcoding?
Egress fees ($0.09/GB on AWS), provisioning for peak load while paying for it 24/7, on-call time, codec and FFmpeg version upkeep, and single-engineer knowledge risk. None appear in a naive server-cost estimate, and together they usually exceed the compute bill several times over.
Does an FFmpeg API replace a whole microservice?
Yes. One API call replaces the job queue, worker pool, retry logic, storage layer, timeout handling, and monitoring you'd otherwise build and maintain. You submit a job, poll or take a webhook, and download the output, with no servers to run.
When should I switch from self-hosted FFmpeg to a cloud API?
Switch when the engineer time spent on your pipeline outweighs its business value, when a queue backup becomes an on-call incident, or when a new codec forces a rebuild you don't have time for. If your monthly encode volume is under a few hundred hours, the math already favors an API.
Point your transcode step at one endpoint, keep the free tier while you compare it to your real infrastructure bill, and stop paying for idle encode boxes. Sign up free and run your first job in minutes.
About Javid Jamae
Founder & CEO at FFmpeg Micro
Javid is a software engineer, author, and entrepreneur with over 25 years of professional software development experience across enterprise, startup, and consulting environments. He founded FFmpeg Micro to make video processing accessible to developers through a simple, automation-first REST API.
You might also like

Compress video for the web: bitrate, codecs, and one-call presets
Compress video for the web with the right bitrate, codec, and CRF preset. See the exact FFmpeg command plus a one-call video compression API you can try free.

Self-Hosting FFmpeg on Railway: Ephemeral Disk, Exit 137, and the 15-Minute Cap
You can run FFmpeg on Railway, but ephemeral disk, exit-137 OOM kills, and the 15-minute request cap break it at scale. What fails, and the no-infra fix.

Concatenate clips programmatically: a composition API primer
Concatenate clips programmatically with a composition API: why FFmpeg's concat demuxer breaks on mixed inputs, the real CLI commands, and the one-call fix.
Ready to process videos at scale?
Start using FFmpeg Micro's simple API today. No infrastructure required.
Get Started Free