Highly Available Live Encoding Using Go and Kubernetes
summary
Built a containerized live transcoder using Go for control, a C++ libtranscoder for heavy CPU work, and libSRT for UDP ingest running on Kubernetes (EKS) with an operator that autoschedules pods, estimates CPU per ABR ladder, and bin packs to spot instances. Platform runs 1,000+ live linear channels (used for March Madness and Tokyo Olympics), delivers 1080p60 (4K coming), cuts incidents from several/day to 1.8/month, achieves ~5 nines for most channels, and supports bi‑weekly, zero‑downtime upgrades.
AI-written summary · about
chapters (16)
- 0:00Ice Cream Planet's transcoding platform
- 3:37Key terms for live encoding
- 4:19Live transcoder pods architecture
- 7:10Kubernetes deployment for transcoders
- 8:59Cluster autoscaling with soft headroom
- 10:23Multi-cluster scaling and data flow
- 10:44Platform outcomes and benefits
- 12:10Lessons from platform evolution
- 13:34Cloud networking challenges and SRT metrics
- 14:43Q&A on UDP packet loss
- 16:27Measuring performance and QoE
- 18:32UDP buffer depth and jitter mitigation
- 20:22SRT integration and AWS alternatives
- 20:42Single-node transcoding assumptions
- 21:24Why UDP over TCP for streaming
- 22:48Closing remarks
related talks
22mKeynote: Kubernetes: As Seen On TV
42mDelivering TV Everywhere with Cloud Native Solutions
36mUsing Kubernetes for Handling Second Screen Experience of European TV Show
40mCase Study: Kubernetes at Comcast
30mHow Go Helped Accelerate Software Delivery at the BBC
05mGo for Real Time Streaming Architectures
14mMovienight 101: How to Power a Video Streaming with Kubernetes and WebRTC
22mDistributed Video Management at Tesco Scale with Edge Compute and Kubernetes
