HLSEncodingStorage

Adaptive bitrate-stiger forklart: fra 360p til 4K og diskkostnad

Hvordan adaptiv bitrate-strømming velger kvalitet, de faktiske trinnene og bitratene i UFOLOAD-konvertereren og hva hvert trinn koster i diskplass per time.

En adaptiv bitrate-stige er settet med versjoner av en video som en strømmespiller kan velge mellom. Hvert trinn har en oppløsning og en bitrate; spilleren starter på ett, følger med på hvor raskt segmentene lastes ned og går opp eller ned etter hvert som forbindelsen endrer seg. Med riktig stige får både en seer på toget og en seer foran en 4K-TV jevn avspilling fra én og samme opplasting. Med feil stige kaster du enten bort disk og båndbredde på trinn ingen bruker, eller så blir seere med treg forbindelse sittende og se på et lastehjul.

Denne artikkelen forklarer hvordan en stige fungerer, og viser deretter den faktiske stigen som UFOLOAD-konvertereren bygger, med bitratene hentet rett fra konvertereren, og hva hvert trinn koster i diskplass per time video.

Slik velger spilleren trinn

Master-spillelisten i en HLS-strøm lister opp hvert trinn med tre attributter som betyr noe: BANDWIDTH, RESOLUTION og CODECS. Spilleren måler nedlastingshastigheten over de siste segmentene og velger det høyeste trinnet der BANDWIDTH ligger godt under denne hastigheten. To detaljer er verdt å kjenne til.

For det første er BANDWIDTH en toppverdi, ikke et gjennomsnitt. Hvis en spilleliste oppgir for lav verdi, velger spilleren et trinn forbindelsen ikke klarer å holde, og avspillingen stopper opp. Derfor skriver konvertereren vår toppverdien og aldri null. For det andre skjer byttet ved segmentgrensene. Segmentene våre er fire sekunder lange, og koderen legger en nøkkelramme i starten av hvert segment, slik at spilleren kan hoppe mellom versjonene uten hikke. Kortere segmenter reagerer raskere, men gir flere forespørsler; fire sekunder er et vanlig kompromiss.

Vil du legge en slik strøm på din egen side, viser hvordan du bygger inn en HLS-video alternativene med iframe og hls.js.

UFOLOAD-stigen

Konvertereren har fire trinn: 2160p (4K), 1080p, 720p og 360p. Et trinn lages bare hvis kilden er minst like høy, fordi oppskalering ikke gir flere detaljer, men mangedobler filstørrelse og kodetid. En 720p-kilde gir 720p og 360p; en kilde under 360p gir én versjon i sin egen størrelse, slik at hver fil har minst én avspillbar versjon. Bredden følger kildens sideforhold og rundes av til et partall, fordi H.264 med 4:2:0-kroma ikke kan kode odde dimensjoner. Breddene nedenfor forutsetter 16:9.

Trinnene i UFOLOAD-konvertereren (H.264 High-profil, AAC stereo)
TrinnBilde ved 16:9VideotakKvalitetsmål (CRF)LydMaks størrelse per time
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

Standard forhåndsinnstilling er medium, og bitratene for trinnene er valgt for vanlig H.264-innhold. 1080p-trinnet har et tak på 5 Mbit/s: det holder til et rent bilde, og over det vokser filen uten synlig gevinst. 4K har fire ganger så mange piksler som 1080p, så taket er 16 Mbit/s, over tre ganger høyere, for å hindre at blokker dukker opp i komplekse scener.

Konvertereren lager ikke 480p eller 240p. Færre trinn betyr mindre diskbruk og kortere koding, og mellom 360p og 720p har spilleren fortsatt et fornuftig steg for trege mobilforbindelser. Hvilke trinn du faktisk får, avhenger også av planen din: 360p og 720p er grunnlaget, og det øverste trinnet begrenses av planens tak, som står på prissiden. På Free-planen får en video én kvalitet.

CRF og bitratetak: hvorfor filstørrelsene er øvre grenser

Koderen sikter ikke mot en fast bitrate. Den sikter mot konstant kvalitet, uttrykt som CRF (constant rate factor): et lavere tall gir bedre bilde og større fil. Statisk video av en person som snakker trenger svært lite data for å nå målet, en actionscene trenger mye. For at ingen enkeltscene skal oversvømme en treg forbindelse, har hvert trinn også en maxrate lik bitraten i tabellen og en buffer på det dobbelte. Resultatet er en strøm som som regel ligger under taket og aldri over det lenge.

Derfor er størrelsene i denne artikkelen toppstørrelser. En forelesning eller et skjermopptak havner som regel godt under dem. Innhold med mye prat kan bli en brøkdel av taket, mens sport med mye bevegelse eller støyete opptak kommer nær. Når du beregner størrelsen på et bibliotek, bruker du toppverdien for et trygt budsjett og ditt eget målte gjennomsnitt for et realistisk.

Kvalitetsprofilen i kodestudioet forskyver denne balansen. Den raske profilen bruker en raskere x264-forhåndsinnstilling og gjør videoen klar tidligere, med litt større filer; kvalitetsprofilen bruker en langsommere forhåndsinnstilling og lavere CRF for et renere bilde, og er tilgjengelig på betalte planer. Den balanserte standardprofilen ligger mellom de to.

Hva en stige koster i diskplass

Én time video ved toppverdien for hvert trinn veier 6,79 GiB i 2160p, 2,16 GiB i 1080p, 1,23 GiB i 720p og 0,36 GiB i 360p. En full stige er summen av trinnene kilden tillater, og hvert trinn er en egen fil på disken:

KildeoppløsningTrinn som lagesMaks størrelse per time video
4K (2160p)2160p, 1080p, 720p, 360p10,54 GiB
Full HD (1080p)1080p, 720p, 360p3,75 GiB
HD (720p)720p, 360p1,59 GiB
Under 360pÉn versjon i kildens størrelseAvhenger av kilden

Et konkret eksempel: 100 timer Full HD-materiale gir høyst rundt 375 GiB med versjoner. Setter du taket for øverste trinn til 720p, trenger de samme hundre timene høyst rundt 159 GiB, altså en reduksjon på mer enn halvparten. Det øverste trinnet dominerer regningen: fjerner du 4K fra et bibliotek med 4K-kilder, forsvinner omtrent to tredjedeler av vekten. Om en leverandør regner disse versjonene inn i lagringskvoten din, er et eget spørsmål, som drøftes i hva videohosting koster; hos UFOLOAD beregnes kvoten ut fra størrelsen på filene du laster opp.

Finjuster stigen i kodestudioet

Du trenger ikke godta standardverdiene. Kodestudioet i dashbordet har tre innstillinger som endrer hvor mange trinn du lagrer:

  • Maksimal oppløsning. Videoer kodes aldri over denne verdien. Oppløsninger over planens tak er låst.
  • Laveste kvalitet. Velg 360p, 720p eller 1080p som nederste trinn. Hever du det, fjernes de små trinnene, noe som sparer disk og kodetid, men seere med svak forbindelse mister reserven sin. Behold derfor 360p hvis publikummet ditt omfatter mobilbrukere.
  • Hurtigvalg. Maksimal kvalitet, balansert, spar lagring (opptil 720p og bare kvalitetene du trenger) og øyeblikkelig publisering for kontoer som kvalifiserer.

Endringene gjelder nye opplastinger. For å bruke dem på videoer som allerede ligger i biblioteket, bruker du handlingen for ny koding. Den behandler de nyeste videoene i puljer og har en pause mellom kjøringene; videoene kan fortsatt spilles av mens de kodes på nytt.

Hvis du bygger din egen stige

  • Hold stegene mellom nabotrinn på omtrent 1,5 til 2 ganger i bitrate. Mindre steg gir mer lagring uten synlig gevinst, større steg gjør kvalitetshoppet tydelig.
  • Start lavt nok for de tregeste realistiske seerne dine. Et trinn ingen klarer å holde, er bortkastet; et manglende bunntrinn betyr lastehjul.
  • Juster nøkkelrammene etter segmentlengden, og oppgi toppbitraten i spillelisten.
  • Ikke oppskaler. Begrens hvert trinn til kildens høyde.
  • Mål hvilke trinn seerne faktisk bruker etter en måned, og fjern dem som aldri spilles av.

Hele kjeden, fra opplastingsformater til levering, finner du på funksjonssiden; grenser og priser for planene står under priser. Sammenligner du fortsatt alternativer, dekker sjekklisten for videohosting spørsmålene om koding og kvalitet du bør stille enhver leverandør.

Prøv med en gratis konto

Last opp en video og få en HLS-spiller og en API-nøkkel på få minutter. Grensene for hver plan står på prissiden.