From $50K to $150/Month: How I Stopped Getting Robbed by CDNs and Built My Own Damn Streaming Infra
Harsh Suthar

Harsh Suthar @harsh_suthar_5a9a14772609

About: A go-to guy for your developer needs

Location:
India
Joined:
Dec 29, 2024

From $50K to $150/Month: How I Stopped Getting Robbed by CDNs and Built My Own Damn Streaming Infra

Publish Date: Jul 20
4 0

Apparently, streaming video in India means paying like you're Netflix.
And I’m just trying to stream some bhajans, bro 🙃

$50,000/Month 😵

That was our infra bill.
Just to deliver basic, compressed, chill spiritual content — no fancy 4K, no Dolby, no premium anything. Just 1080p livestreams, mostly under 2Mbps.

You'd think this would cost a few hundred bucks, right?

Try $50K a month.

WTF


Who Was Bleeding Us Dry?

Not encoding. Not storage.

It was delivery.
Plain old “here’s your video segment, dear user” delivery 📦

Here’s what the MUX bill for 70 million requests looked like:

Category Monthly Cost
Encoding $393.75
Storage $2.34
Delivery (CDN) $44,782.50
Total ~$45,178.59

Almost 45 grand just to deliver files over HTTP.
Like... seriously?

Are you FR?


Tried Bunny CDN, Got Slapped Anyway 🐰💸

Switched over to Bunny.
Bunny Stream, Bunny CDN, self-hosted pipeline — the works.

Cost dropped to $5K–6K/month, which felt like an improvement…
…until you remember we’re a small startup streaming in India — not HBO 😐

And surprise: most users still got routed through Tokyo or Singapore.
Closest edge?
More like closest disappointment.

OH


So I Said “Screw This, I’m Building It Myself” 💀🧱

No VCs.
No fancy containers.
No $500/hr DevOps consultants.

Just me, a VPS, and years of accumulated frustration.

I opened up FFmpeg docs.
Dug through old NGINX configs.
Skimmed Cloudflare pricing tables.
Then built a pipeline from scratch that:

  • Doesn’t charge you $44K for breathing near the CDN
  • Actually respects Indian traffic
  • And doesn’t rely on any black-box streaming magic 🔮

Take Over


Here’s What I Built — And How It Works ⚙️

This setup now serves 70M+ requests/month with:

  • Peak concurrency in 100Ks
  • Under 2s startup latency
  • < 0.5% buffering
  • $150/month infra cost 💸✅

RTMP Ingest via nginx-rtmp on VPS

Livestreams hit a raw RTMP server (NGINX + nginx-rtmp-module) on a beefy VPS.
Nothing fancy. Just reliable, stateless ingestion.

Transcoding via ffmpeg in Realtime

FFmpeg transcodes streams to 3 different bitrates (480p, 720p, 1080p).
No rocket science. Just CLI flags, CPU, and fast disk.

No Storage. No Bloat.

We don’t store livestreams (yet).
This means $0 storage cost, no object storage APIs, no S3 surprises 🎯

HLS Segments Churned Locally

FFmpeg chunks video into .ts segments and .m3u8 playlists — standard HLS.
These are dumped on disk, auto-updated in real time.

Cloudflare Does the Heavy Lifting ☁️🔥

And here’s the kicker.

Cloudflare caches those segments like a champ:

  • ~95% cache hit ratio
  • Actual edge delivery inside India
  • Egress? Basically free
  • Bandwidth? Who even pays for that anymore? 🤷‍♂️

CDN usage is billed in Class A + B operations, which are hilariously cheap if you serve static HLS files properly.


Total Monthly Cost Now?

Service Monthly Cost
VPS (8-core) ~$50
Cloudflare CDN ~$80
Misc Ops ~$20
Total $150

That’s it.
From $50K to $150.
No performance loss.
In fact — it’s faster now 🚀

Hell yeahhhh


TL;DR Reality Check 🧠💥

  • Ditch platforms built for US-centric traffic. Tokyo is not an Indian edge.
  • Transcoding isn’t magic. It’s FFmpeg. Learn it.
  • You don’t need cloud-native. You need cost-native.
  • Don’t let SaaS eat your entire infra budget just because they slapped a dashboard on top of open-source tools.

👋 If You’re a Startup Trying to Build Something Similar...

And you're stuck wondering why your streaming bill looks like a Black Mirror episode…

Hit me up.

I'll help you build a streaming infra that actually makes sense for your users and your wallet.


💬 And Everyone Else…

What do you think about this setup?
Tried building something similar? Drop your story below — I’d love to compare war wounds 😅

Comments 0 total

    Add comment