DOWNLOAD · BUFFER · PLAY
Adaptive bitrate: follow every segment
A deterministic player session, with visible data transfer and actual buffer accounting.
Blue: network · Purple: active rendition · Green: playable buffer
Exact player state
Completed downloads
| Segment | Rendition | Start | End | Measured rate | Decision buffer |
|---|
A player needs complete media, not just a bandwidth label
This experiment models a sequential video-on-demand player over sixty seconds. Each rendition has a constant bitrate, so segment size in kilobits equals rendition bitrate multiplied by segment duration. Network capacity transfers that data in one-hundred-millisecond steps. Only a completed segment adds playable seconds to the buffer. Playback consumes the buffer at one media second per wall-clock second, and an empty buffer after startup accumulates stalled time. The evidence panel lets you check that completed media equals played media plus remaining buffer at every step.
Choose a rule and a repeatable network trace
Strategy selects one of three explicitly simplified rules, not an implementation of a production player. Throughput chooses the highest ladder bitrate at or below the latest completed download estimate multiplied by the safety fraction. If even the lowest rendition exceeds that budget, it still chooses the lowest and may stall. Buffer maps each six seconds of playable media to another rendition tier, starting at four hundred kilobits per second. Hybrid takes the lower of those two choices. The initial estimate equals the configured normal capacity: this is a visible warm-start assumption, not knowledge learned from a completed request. Later estimates are actual segment bits divided by download duration, including outage time.
Change the conditions that determine download and startup time
Trace selects steady capacity, a capacity drop from twenty through forty seconds, or a complete outage in that interval. Normal capacity sets the rate outside that interval. Reduced capacity applies only to the drop trace; it does not override the outage, whose rate is zero. Segment duration changes both media length and transfer size. Startup buffer sets how many complete playable seconds must arrive before playback begins. Safety fraction affects throughput and hybrid decisions but not the buffer-only rule. All scenario edits reset the session so a plot never combines incompatible parameter histories. A thirty-second buffer cap pauses new requests until another whole segment fits.
Try exact startup arithmetic before comparing policies
Select steady trace, normal capacity four thousand, segment duration four, startup buffer eight, throughput strategy and safety fraction zero point eight. The chosen rendition is three thousand kilobits per second. A segment contains twelve thousand kilobits and takes three seconds to download. Two complete segments therefore start playback at six seconds. Scrub to six seconds and inspect the completed rows, eight-second buffer and zero played media. Step forward one second to see playback consume media while the next request progresses. The buffer policy starts at the lowest rendition instead, so its first segment completes in four tenths of a second.
Watch an outage affect a request that is already in flight
Restore defaults, switch trace to outage, then run the session. Between twenty and forty seconds downloaded bits do not increase. A request that began earlier keeps its original rendition; this player does not abandon it midway. Existing buffered media continues to play and may run out. After network recovery that same request completes, its measured throughput includes the time spent waiting, and only the next rendition decision uses that result. Compare throughput, buffer and hybrid with identical settings, inspecting completed-segment rows and total stalled seconds rather than assuming one policy always wins.
Playback and visual evidence
Play advances the sixty-second model at the selected inspection speed; Pause freezes it, Restart returns to zero with the same scenario, and Step advances one model second. Finish shows the final state immediately. Timeline scrub selects any tenth of a second and pauses playback. Speed offers half, normal, double and quadruple playback without changing the computed outcome. Restore defaults resets scenario controls. The upper graph shows blue available capacity and purple active-request rendition; a zero purple line means no request is in flight, not a zero-bitrate video. The lower green line shows playable seconds. The progress bar shows the current request fraction, while text and the completed-download table expose the same facts without relying on color.
What this model does not promise
The player uses fixed-size segments, sequential downloads and one-hundred-millisecond transfer accounting. Unused capacity at a completion tick is discarded instead of immediately starting another segment, so rounding can reduce measured throughput. Playback consumes that tick’s media before its newly completed segment becomes available. There is no RTT, request header cost, playlist polling, audio track, codec quality score, variable-size scene, decoder failure, seeking, concurrent fetch or real network request. After startup, a stalled player resumes as soon as a complete segment arrives; it does not reapply the startup threshold. These boundaries explain the output and prevent interpreting the trace as an exact browser-player benchmark.