← Back to experience
Case study · DarkHorse · 2023 - 2025
Rebuilding video processing around HLS
Moved a sports video platform from server-side downloading and stitching of very large files to one-time HLS conversion with clips composed in the browser.
- ~90%
- less backend processing time
- ~70%
- lower infrastructure cost
- 500K+
- video plays
Problem
Every request for a clip downloaded the full match video (5 to 20 GB), trimmed it with FFmpeg and stitched the result on the server. It was slow and expensive for 500+ clubs and 20K+ athletes.
My role
I was tech lead of the 8-person software team and shared the architecture decisions with one other full-stack engineer. I built the custom multi-video player.
Approach
- Convert each MP4 to HLS once, at ingestion.
- Compose clips in the browser from HLS segments instead of producing new files on the server.
- Build a player that plays a list of HLS clips in sequence with player-tracking boxes kept in sync.
- Trigger ingestion from partner webhooks on S3, CloudFront, Lambda, SNS/SQS and Fargate (Pixellot and BeyondPulse as primary engineer; Veo, Trace and Hudl as contributor).
Result
Backend processing time fell by about 90% and infrastructure cost by about 70%. The platform served 500K+ video plays.
Next.jsTypeScriptHLSFFmpegAWS S3CloudFrontLambdaSNS / SQSFargateMongoDB