Why architecture matters here
Live streaming failures are always visible. Rebuffering during a moment; startup delay when a viewer taps play; the wrong audio track attached; captions out of sync. Every one traces back to an architectural choice: chunk size, encoder ladder, CDN geography, ABR heuristics.
The architecture matters because scale amplifies each choice. 1000 viewers may tolerate a slow origin; 100,000 will burn it down. LL-HLS at 2-second chunks feels great until CDN caching semantics fight you.
With the pipeline mapped you can design for expected surge events and unwind bottlenecks with intent.
The architecture: every piece explained
The top strip is ingest and encode. Broadcaster sends via RTMP (legacy, reliable), SRT (modern, low-latency, congestion-aware), or WebRTC (ultra-low-latency). Ingest edge authenticates and relays to the transcoder. Transcoder produces the ladder — multiple resolution + bitrate variants — using chunked encoding for low latency. Packager assembles LL-HLS or LL-DASH manifests and CMAF chunks.
The middle row is delivery. Origin stores manifests and segments. CDN + shielding caches at PoPs with a shield tier to reduce origin load. Player + ABR selects quality based on measured bandwidth + buffer health. Captions + audio tracks attach WebVTT and alternate languages, synced with segments.
The lower rows are features and observation. DVR / catch-up maintains a sliding window for pause + rewind. Analytics measures Quality of Experience — startup time, rebuffer ratio, bitrate distribution. Ops plans capacity for surge events (Super Bowl, product launches) and manages origin scaling and CDN cost.
End-to-end flow
End-to-end: a streamer opens OBS with RTMP; ingest edge authenticates. Transcoder produces 5 renditions (240p to 1080p60) using chunked encoding with 2-second segments. LL-HLS manifest generated with partial segments. Origin caches manifests briefly, segments longer. Viewer opens player; player fetches manifest; picks a starting rendition; segments start flowing from CDN. ABR upshifts as buffer fills; downshifts when the network dips. Captions arrive on a synchronized WebVTT track. Analytics reports 2.3s startup, 0.3% rebuffer ratio during peak. Origin holds steady thanks to shielding cache hits.