HLSEncodingStorage

Adaptieve bitrateladders uitgelegd: van 360p tot 4K en schijfruimte

Hoe adaptieve streaming een kwaliteit kiest, de echte treden en bitrates van de UFOLOAD-converter en wat elke trede per uur aan schijfruimte kost.

Een adaptieve bitrateladder is de set versies van een video waaruit een streamingspeler kan kiezen. Elke trede heeft een resolutie en een bitrate; de speler begint op één trede, kijkt hoe snel segmenten binnenkomen en schakelt omhoog of omlaag als de verbinding verandert. Zit de ladder goed, dan krijgen een kijker in de trein en een kijker voor een 4K-televisie allebei vloeiend beeld uit één upload. Zit hij fout, dan verspil je schijfruimte en bandbreedte aan treden die niemand gebruikt, of zien trage kijkers alleen een laadrondje.

Dit artikel legt uit hoe een ladder werkt en laat daarna de echte ladder zien die de UFOLOAD-converter bouwt, met de bitrates rechtstreeks uit de converter, en wat elke trede per uur video aan schijfruimte kost.

Hoe de speler een trede kiest

De master-playlist van een HLS-stream somt elke trede op met drie attributen die ertoe doen: BANDWIDTH, RESOLUTION en CODECS. De speler meet zijn downloadsnelheid over de laatste paar segmenten en kiest de hoogste trede waarvan de BANDWIDTH ruim onder die snelheid past. Twee details zijn goed om te weten.

Ten eerste is BANDWIDTH een piekwaarde, geen gemiddelde. Geeft een playlist een te lage waarde op, dan kiest de speler een trede die de verbinding niet kan bijbenen en hapert het afspelen. Daarom schrijft onze converter de piek weg en nooit nul. Ten tweede gebeurt het wisselen op segmentgrenzen. Onze segmenten zijn vier seconden lang en de encoder zet aan het begin van elk segment een keyframe, zodat de speler zonder hapering tussen versies kan springen. Een korter segment reageert sneller maar levert meer verzoeken op; vier seconden is een gangbaar compromis.

Wil je zo'n stream op je eigen pagina zetten, dan laat een HLS-video insluiten de opties met iframe en hls.js zien.

De UFOLOAD-ladder

De converter heeft vier treden: 2160p (4K), 1080p, 720p en 360p. Een trede wordt alleen aangemaakt als je bron minstens zo hoog is, want opschalen voegt geen detail toe en vermenigvuldigt de bestandsgrootte en de coderingstijd. Een 720p-bron levert 720p en 360p op; een bron kleiner dan 360p levert één versie op in zijn eigen formaat, zodat elk bestand minstens één afspeelbare versie heeft. De breedtes volgen de beeldverhouding van je bron en worden afgerond op een even getal, omdat H.264 met 4:2:0-chroma geen oneven afmetingen kan coderen. De breedtes hieronder gaan uit van 16:9.

Treden van de UFOLOAD-converter (H.264 High-profiel, AAC stereo)
TredeBeeld bij 16:9VideolimietKwaliteitsdoel (CRF)AudioPiekgrootte per uur
2160p3840x216016 Mbit/s20192 kbit/s6,79 GiB
1080p1920x10805 Mbit/s22160 kbit/s2,16 GiB
720p1280x7202,8 Mbit/s23128 kbit/s1,23 GiB
360p640x3600,8 Mbit/s2664 kbit/s0,36 GiB

De standaardpreset is medium, en de bitrates per trede zijn gekozen voor gewone H.264-content. De 1080p-trede is begrensd op 5 Mbit/s: dat is genoeg voor een schoon beeld, en daarboven groeit het bestand zonder zichtbare winst. 4K heeft vier keer zoveel pixels als 1080p, dus de limiet ligt op 16 Mbit/s, ruim drie keer hoger, zodat er in complexe scènes geen blokken zichtbaar worden.

De converter maakt geen 480p of 240p. Minder treden betekent minder schijfruimte en kortere codering, en tussen 360p en 720p heeft de speler nog steeds een zinnige stap voor trage mobiele verbindingen. Welke treden je daadwerkelijk krijgt, hangt ook af van je abonnement: 360p en 720p zijn de basis en de hoogste trede wordt begrensd door het plafond van je abonnement, te vinden op de prijspagina. Op het Free-abonnement krijgt een video één kwaliteit.

CRF en een bitratelimiet: waarom bestandsgroottes bovengrenzen zijn

De encoder mikt niet op een vaste bitrate. Hij mikt op constante kwaliteit, uitgedrukt als CRF (constant rate factor): een lager getal betekent een beter beeld en een groter bestand. Een statisch praatbeeld heeft heel weinig data nodig om het doel te halen, een actiescène juist veel. Om te voorkomen dat één scène een trage verbinding overspoelt, heeft elke trede ook een maxrate gelijk aan de bitrate in de tabel en een buffer van twee keer die waarde. Het resultaat is een stream die meestal onder de limiet blijft en er nooit lang boven zit.

Daarom zijn de groottes in dit artikel piekgroottes. Een college of een schermopname komt doorgaans ruim lager uit. Content met veel praten kan een fractie van de limiet zijn, snelle sport of beeld met veel ruis komt er dicht bij. Reken bij het dimensioneren van een bibliotheek met de piek voor een veilig budget en met je eigen gemeten gemiddelde voor een realistisch budget.

Het kwaliteitsprofiel in de Encoding studio verschuift deze balans. Het snelle profiel gebruikt een snellere x264-preset en heeft de video eerder klaar, met iets grotere bestanden; het kwaliteitsprofiel gebruikt een langzamere preset en een lagere CRF voor een schoner beeld en is beschikbaar op betaalde abonnementen. De gebalanceerde standaard zit daartussenin.

Wat een ladder kost aan schijfruimte

Eén uur video op de piek van elke trede weegt 6,79 GiB bij 2160p, 2,16 GiB bij 1080p, 1,23 GiB bij 720p en 0,36 GiB bij 360p. Een volledige ladder is de som van de treden die je bron toelaat, en elke trede is een apart bestand op schijf:

BronresolutieAangemaakte tredenPiekgrootte per uur video
4K (2160p)2160p, 1080p, 720p, 360p10,54 GiB
Full HD (1080p)1080p, 720p, 360p3,75 GiB
HD (720p)720p, 360p1,59 GiB
Onder 360pEén versie in het bronformaatHangt af van de bron

Een concreet voorbeeld: 100 uur Full HD-materiaal levert hoogstens ongeveer 375 GiB aan versies op. Begrens je de hoogste trede op 720p, dan hebben dezelfde honderd uur hoogstens ongeveer 159 GiB nodig, een besparing van meer dan de helft. De hoogste trede bepaalt de rekening: 4K weglaten uit een bibliotheek met 4K-bronnen haalt er ruwweg twee derde van het gewicht af. Of een host deze versies meetelt voor je opslagquotum is een aparte vraag, besproken in wat videohosting kost; bij UFOLOAD wordt het quotum berekend op de grootte van de bestanden die je uploadt.

De ladder afstemmen in de Encoding studio

Je hoeft de standaardinstellingen niet te accepteren. De Encoding studio in het dashboard heeft drie instellingen die bepalen hoeveel treden je opslaat:

  • Maximale resolutie. Video's worden nooit boven deze waarde gecodeerd. Resoluties boven het plafond van je abonnement zijn vergrendeld.
  • Laagste kwaliteit. Kies 360p, 720p of 1080p als onderste trede. Een hogere waarde schrapt de kleine treden, wat schijfruimte en coderingstijd bespaart, maar kijkers met een zwakke verbinding verliezen hun terugval. Houd dus 360p aan als je publiek mobiele gebruikers omvat.
  • Snelle presets. Maximale kwaliteit, gebalanceerd, opslag besparen (tot 720p en alleen de kwaliteiten die je nodig hebt) en direct publiceren voor accounts die daarvoor in aanmerking komen.

Wijzigingen gelden voor nieuwe uploads. Wil je ze toepassen op video's die al in je bibliotheek staan, gebruik dan de actie opnieuw coderen. Die verwerkt de nieuwste video's in batches en heeft een afkoelperiode tussen de runs; video's blijven afspeelbaar terwijl ze opnieuw worden gecodeerd.

Als je je eigen ladder bouwt

  • Houd de stappen tussen naburige treden op ruwweg 1,5 tot 2 keer in bitrate. Kleinere stappen kosten opslag zonder zichtbaar voordeel, grotere maken de kwaliteitssprong opvallend.
  • Begin laag genoeg voor je traagste realistische kijkers. Een trede die niemand kan bijbenen is verspild; een ontbrekende onderste trede betekent een laadrondje.
  • Stem keyframes af op de segmentlengte en vermeld de piekbitrate in de playlist.
  • Schaal niet op. Begrens elke trede op de hoogte van de bron.
  • Meet na een maand welke treden je kijkers echt gebruiken en schrap de treden die nooit worden afgespeeld.

Voor de hele pijplijn, van uploadformaten tot levering, zie de functiepagina; voor limieten en prijzen per abonnement, zie prijzen. Vergelijk je nog opties, dan behandelt de checklist voor videohosting de vragen over codering en kwaliteit die je elke aanbieder kunt stellen.

Probeer het met een gratis account

Upload een video en krijg binnen enkele minuten een HLS-speler en een API-sleutel. De limieten per abonnement staan op de prijspagina.