Live model · Netflix streaming
Why Netflix Starts Blurry, Then Gets Sharp
A stream is cut into chunks a few seconds long, each stored at several qualities, and the player picks one per chunk. At the start its buffer is empty and it knows nothing about your network, so it takes a low quality to play at once and climbs as the buffer fills. The blur is the price of starting fast.
Pressing play: the player picks every chunk
- CH1 On screen
- CH2 Network
- CH4 Buffer
- CH3 Cushion
How to read the stage
The picture is what's on screen; the ladder marks the rung being downloaded and the one playing. On a steady 5 Mb/s line, the first chunk comes at the bottom rung, 145 kb/s and 416 × 234, and playback starts 0.2 s after you press play. The player climbs one rung at a time and reaches 720p at chunk 7, so the first 24 seconds of video play softer than that. It never stalls.
Why start low
A chunk can't play until it has fully arrived, and an empty buffer means nothing to fall back on. A 1080p chunk at 7,800 kb/s is 31 megabits: a 5 Mb/s line needs over 6 seconds for it, staring at a spinner. The bottom rung takes 0.2 s. The player then steps up one rung after each chunk that downloads at least 8 times faster than it plays, the rule Netflix's engineers tested, until the buffer can decide.
The buffer decides
Past the start, the player reads one number: seconds of video buffered. Below the reservoir it takes the bottom rung; across the cushion a straight line maps buffer to rate; past it, the top rung. It only changes rung when that line crosses the next one, so it doesn't flicker. In Netflix's tests the buffer was 240 s, with a 90 s reservoir and a 126 s cushion. The stage shrinks it to fit two minutes.
Guessing the network, versus reading the buffer
Most players then picked from a measurement: the last chunk came at 5,000 kb/s, so ask for a bit less. When the line drops to 0.8 Mb/s, that measurement is stale. Here the throughput-based player freezes for 2.1 s; the buffer-based one, with 27 s banked, never does, at the same average rate. The paper reports 10 to 20% fewer rebuffers in Netflix's tests.
The network drops: two players, one line
- CH2 Throughput-based
- CH4 Buffer-based
- CH3 Network
What the model leaves out
The ladder is Apple's recommended one; Netflix now encodes a ladder per title. Real chunks vary in size around their rung's average, the network varies within a second, and today's players blend buffer and throughput signals. The picture is 48 × 27 pixels standing in for 1080p, averaged down to each rung's resolution, so it shows the idea of a lower rung, not a real encoder's artifacts.
Questions
- Why does Netflix look blurry when it starts?
- The player starts at a low quality so the first chunk arrives in a fraction of a second, then steps up as its buffer fills. A sharp first chunk would be dozens of times bigger and keep you waiting.
- Why does the quality drop in the middle of a show?
- Your connection slowed, and the player's buffer started shrinking. Stepping down to smaller chunks keeps the buffer from running dry, which would freeze the picture. When the buffer recovers, it climbs back.
- Can I force Netflix to stay in HD?
- Each profile's playback settings have a data usage level: Low, Medium, High or Auto. It caps how high the player climbs, not how low it starts, and the player still adapts below that cap to avoid freezing.
- What is adaptive bitrate streaming?
- Storing a video at several qualities, cut into short chunks, so the player can choose a quality chunk by chunk as conditions change. HLS and DASH, the formats nearly every streaming service uses, both work this way.