All posts

Why HLS still wins for video that has to just play

ZeroStorage Team2 min read

Every upload on ZeroStorage is transcoded into an HLS ladder — a set of renditions from 1080p down to 240p, each with its own bitrate. The player picks the rung it can sustain right now, and switches mid-stream when conditions change. That is the whole trick, and it is why a link you share today keeps working on a train tomorrow.

What the ladder actually contains

FFmpeg produces a master playlist plus one playlist per rendition. The browser never downloads the whole file; it requests short segments, usually four to ten seconds each, and re-evaluates its bandwidth between them.

  • A master .m3u8 that lists every rendition and its codecs.
  • Segment playlists that let the player start in under a second.
  • Audio-only renditions for listeners on metered connections.

Why not just serve the MP4

A progressive MP4 works until it does not. Without byte-range support and a stable connection, the player stalls, buffers, and loses the viewer. HLS trades a little setup for resilience, and the trade pays off on every device you do not control.

One link, every connection speed. That is the promise, and the ladder is how we keep it.

Choosing the rungs

The ladder is built for the file in front of the encoder, not for your plan or your account. Before any segment is written, FFmpeg measures how much the picture changes frame to frame and spends bits where the motion actually is. A lecture with a static slide stays cheap for its whole runtime; a fireworks clip pays full price for every second. This is why per-title encoding exists: identical resolutions do not cost identical amounts, and treating them as if they do wastes either money or quality.

  • Rung heights follow the source: a 720p upload never invents a 1080p rung.
  • Bitrates are ceilings, not targets — per-title analysis lowers them whenever the content allows.
  • The player can sit on the top rung for an entire film and never learn the others exist.

What you get without configuring anything

  • Per-title encoding so static footage does not waste bandwidth.
  • Subtitle and audio-track switching inside the same player.
  • An embed URL that survives third-party sites and origin restrictions.

Upload a file, wait for the job to finish, share the watch URL. Read the upload docs if you want this over the API instead of the drop zone.

Home
My Files
API Docs
Contact
Transfers