The content is encoded into a bitrate ladder
A provider creates aligned variants at different resolutions and bitrates. Each variant has its own media playlist. Segment boundaries should line up so the player can switch rendition without jumping to a different moment.
The multivariant playlist describes the choices
BANDWIDTH is an upper bound for the variant, not a marketing label. RESOLUTION and CODECS help the client reject options it cannot display or decode. Apple recommends including accurate average bandwidth, frame rate, resolution and codec information where applicable.
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=640x360,CODECS="avc1.4d401e,mp4a.40.2"
360p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1280x720,CODECS="avc1.4d401f,mp4a.40.2"
720p/index.m3u8The client makes the switching decision
The player observes recent download throughput, buffered duration, playback state and sometimes device constraints. If upcoming media is arriving too slowly, it can request the next segment from a lower variant. When the buffer and throughput recover, it may step upward.
Why quality sometimes changes too often
- Bandwidth fluctuates near the boundary between two variants
- Declared bandwidth is lower than the real peak bitrate
- Segments vary dramatically in size or duration
- Variant timelines or key frames are not aligned
- The player starts conservatively before it has enough measurements
A single-rendition stream is not adaptive
A player cannot select a lower quality if the manifest offers only one high-bitrate media playlist. It can buffer more or retry requests, but it cannot invent an encoding that the server never produced.