Adaptive bitrate streaming, or why a video stalls
Adaptive bitrate streaming encodes one video at several quality rungs, cuts it into segments a few seconds long, and lets the player ask, segment by segment, for the rung the viewer’s bandwidth can actually carry. That is what replaces buffering: instead of stopping, playback drops a notch, then climbs back. On Videas, every upload is transcoded into rungs, segmented and delivered over HLS automatically, from servers hosted in the EU, with nothing to configure on your side.
The problem: a fixed bitrate against a network that is not
An MP4 served as it is forces a constant bitrate: a 1080p video at 2.5 Mbps needs 2.5 Mbps continuously. A mobile connection guarantees nothing from one second to the next, and as soon as the available bitrate falls below the required one, the player drains its buffer and stops. It can do nothing else, because only one version of the file exists. Adaptive bitrate streaming removes that dead end by producing several versions and handing the decision to the player, the only party that knows the real conditions.
The chain, in four steps
- Transcoding. On upload, the source is re-encoded into several rungs of resolution and bitrate, the audio separately, in AAC.
- Segmentation. Each rung is cut into fixed-length segments, four seconds on Videas. A segment is an ordinary file served over HTTP, so it caches.
- The manifest. An M3U8 index describes the rungs and their segments. It is the first file the player downloads, and it is the HLS protocol.
- Arbitration. At every segment the player picks the next rung. The switch only happens on a segment boundary: the picture gets sharper or softer, playback does not break.
Arbitration algorithms differ from one player to the next, depending on whether they decide on measured throughput, on buffer level, or on both. The ABR entry covers the three families.
The encoding ladder
1080p
2.5 Mbps
Fibre, solid Wi-Fi, desktop screen
720p
1.2 Mbps
Decent DSL, stable 4G, eco mode
480p
600 kbps
Average mobile network
360p
300 kbps
Degraded connection, congested network
That is the default ladder: 4K is enabled on request. Videas encodes at constant quality under a bitrate ceiling per rung, with 50% of headroom for busy scenes. The rungs derive from your source and no resolution is manufactured above the original, so uploading the master rather than an export already compressed for social is the one gesture that changes the result.
Each rung is produced in two codecs: H.264, decoded everywhere, and VP9, which gives a sharper picture at the same bitrate. The player serves the browser the most efficient version it can read.
What it takes to run
This is where the subject stops being theoretical. Delivering adaptively under your own steam means a transcoding farm sized for upload peaks, storage for N versions of every video instead of one, a CDN so segments do not cross a continent on every play, and a signed-URL policy so public segments do not become a permanent download link.
Videas hosting runs that chain: storage and transcoding hosted in the EU, delivery over a CDN that caches segments as close to viewers as possible, stream addresses signed and expiring within minutes, and a player with no advertising and no third-party cookie, so no consent banner is needed for it. Live takes the same path: Stream accepts an RTMP or SRT feed and puts it out as adaptive HLS, a few seconds behind the scene.
My video still stalls: what to check
- The source was already compressed. The rungs derive from the uploaded file. An export cut for social platforms caps low: start from the master.
- A quality has been locked in the player. The Quality menu lets a viewer pin one rung, and the player then stops arbitrating: it waits instead of dropping down. Switch back to Automatic.
- Eco mode is on. It caps playback at 720p to save mobile data, and shows as “(Eco)” next to Automatic.
- Encoding is not finished. Playback starts as soon as a first rung and the audio track are ready, and the higher qualities follow. On a long video uploaded five minutes ago, that is normal.
- The page is heavy. Several players on autoplay share the visitor’s bandwidth. One visible player, the others behind a click.
None of this is configured on the publisher’s side: the interface exposes no resolution, codec or profile. What happens after an upload is documented in the help article on encoding and streaming qualities.
FAQ
What is adaptive bitrate streaming?
A delivery technique that encodes the same video at several qualities, cuts it into segments, and lets the player switch from one rung to the next during playback according to the bandwidth it measures. It is also called ABR.
Why does my video keep buffering?
Because the player consumes data faster than it receives it and drains its buffer. Either the video is served as a single file, with no rung to drop down to, or a resolution has been locked by hand, or the segments travel from a server too far from the viewer.
HLS or DASH, which one should I use?
HLS for compatibility, and it is what Videas uses: Apple devices read it natively and everything else reads it through HLS.js. DASH is the ISO standard and accepts more containers, but needs JavaScript on iOS. Both do the same adaptive work.
What is transcoding?
Transcoding converts a video from one format or resolution into others so it plays everywhere. It is the step that builds the rungs of adaptive bitrate streaming: Videas transcodes every upload into several qualities, in H.264 and VP9, with nothing to configure. The full definition is in the glossary entry on transcoding.
Is anything to configure on Videas?
No. The interface exposes no resolution, codec or profile setting: every upload is transcoded into several qualities, segmented, then delivered over HLS. The only variable that belongs to you is the quality of the source file.
Adaptive bitrate streaming is not a setting, it is a chain: transcoding into rungs, segmentation, manifest, CDN, arbitration on the player. Every missing link shows up on the viewer’s screen. On Videas the whole chain fires on upload, and the only parameter left to you is the quality of the file you drop in.