We've shipped a full OTT platform — web, iOS, Android, smart TV, payments, AI tagging, recommendations — in 14 weeks. This post is the playbook. What we built, what we bought, what we wish we hadn't, and what would burn you if you tried to do it in a year.
The decision tree: build vs buy
Most OTT failures come from getting build vs buy wrong. Here's the rule we use:
- Buy the encoder. Always. Use Mux, Bitmovin, or AWS Elemental. Building one is a four-year project that someone else has already done.
- Buy the CDN. Cloudflare, Akamai, or Fastly. Yes, even at scale.
- Buy DRM. Widevine + FairPlay + PlayReady from a packager. Don't roll your own.
- Build the CMS and metadata layer. This is where your product lives.
- Build the recommendation system. Off-the-shelf 'most popular' will lose you customers.
- Build the player experience. The chrome, controls, and quality switching are product surface.
The full stack (what we shipped)
- Encoder: Mux Video
- CDN: Cloudflare Stream + Cloudflare Workers
- DRM: Widevine, FairPlay, PlayReady via Mux
- Backend: Node + Postgres + Redis
- CMS: custom Next.js admin
- Web player: Next.js + Shaka Player
- iOS: native Swift + AVFoundation
- Android: native Kotlin + ExoPlayer
- Smart TV: Tizen / webOS via shared web codebase
- Payments: Stripe + Adyen for regional
- ML: per-user recommendations on a custom collaborative-filtering model
The four things that will burn you
1. Adaptive bitrate ladders
Default ABR ladders are tuned for office WiFi. Real users on mobile networks see buffering. Tune the ladder for your audience: more lower-quality rungs, fewer top-end rungs.
2. Subtitles and accessibility
WebVTT, multiple languages, regulatory subtitles, audio description tracks — all of this is harder than you think. Plan two engineer-weeks just for subtitle pipeline and player support.
3. Regional content rights
Content available in the UK but not in France. A title licensed for 18 months with auto-takedown. The metadata model needs to support these from day one or you'll be patching it forever.
4. Anti-piracy and concurrent stream limits
Account sharing eats your margins. Concurrent stream limits, device fingerprinting, watermarking — all production-grade requirements, not nice-to-haves.
Cost ballpark
- Initial build (12–14 weeks): £150k–£280k for a senior team
- Encoder + CDN: £8k–£20k/month at 100k MAU
- DRM: £2k–£5k/month
- Content moderation + recommendations infra: £3k–£8k/month
- Operational team: 3–5 engineers ongoing
Building OTT is not cheap, but the alternative — duct-taping three SaaS products together and paying margins on each — is rarely cheaper at scale and usually slower to ship.
Written by
RMC Engineering