# Design a Video Streaming Platform — High-Level & Low-Level Design Interview Problems

Source: https://www.skillbyai.com/en/design-interviews/video-streaming

> Upload, transcode, deliver.

## From upload to adaptive playback

Split the system into an **upload path** and a **watch path**. Upload: the client gets a pre-signed URL and uploads the original (often in resumable chunks) directly to object storage; an event triggers a **transcoding pipeline** that splits the video into segments, encodes several renditions (resolutions and bitrates) in parallel workers, generates thumbnails, and writes outputs plus a manifest. Watch: players fetch an **HLS** or **DASH** manifest listing renditions, then download short segments from a **CDN**; **adaptive bitrate (ABR)** logic in the player switches rendition based on measured bandwidth and buffer. Metadata (titles, owners, status) lives in a database; view counts are aggregated asynchronously.

## Upload and delivery pipeline

Simplified flow.

```text
UPLOAD
client --request upload--> API --pre-signed URL--> client
client --chunks--> object storage (raw/)
storage event --> queue --> transcode orchestrator
   -> split into segments -> workers encode renditions in parallel
      (e.g. 1080p, 720p, 480p, 240p; choose a ladder per content)
   -> write segments + HLS/DASH manifests to storage (processed/)
   -> mark video READY in metadata DB

WATCH
player --GET manifest--> CDN (miss -> origin storage)
player --GET segment N at chosen bitrate--> CDN
player measures throughput + buffer -> switches rendition (ABR)
```

## Printing one book in many formats

The publisher prints large-print, paperback and pocket editions once, ships them to local bookshops, and each reader picks the edition that suits them right now.

**Quiz:** What does adaptive bitrate streaming do?

- [x] Lets the player switch between renditions based on network conditions
- [ ] Compresses video on the client before upload
- [ ] Stores one rendition per user
- [ ] Replaces the CDN

*Answer:* Lets the player switch between renditions based on network conditions. ABR adapts quality segment by segment.
