A streaming pipeline is a directed graph of components: source, ingest, transcoder, packager, origin, CDN, edge cache, player. Each one has a defined input format, an output format, a scaling policy and a failure mode. The art of operating a streaming service is keeping every node within its tolerance while traffic patterns, content catalogues and codec mixes change underneath.
The classic OTT pipeline for VOD: source MXF/MOV → transcoder farm (FFmpeg, x264, SVT-AV1) producing an ABR ladder → packager (Shaka, Bento4) emitting CMAF segments and HLS/DASH manifests → object storage (S3, GCS) as origin → multi-CDN front (Akamai, CloudFront, Fastly) → player (hls.js, Shaka, AVPlayer). The live pipeline adds a contribution leg (RTMP, SRT or WebRTC) feeding a live transcoder, and a low-latency variant chains CMAF chunks straight from packager through origin shield to LL-HLS or LL-DASH players.
The pipeline is rarely one vendor end-to-end. Most teams stitch best-of-breed tools and operate the seams: a webhook fires when a new asset is uploaded, a queue picks up the job, the transcoder reports progress to a state store, the packager publishes to a bucket, a CDN invalidation pings the edge. The pipeline's reliability is bounded by its weakest seam, and the streaming engineer's job is mostly hardening seams.

