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.
| Trinn | Bilde ved 16:9 | Videotak | Kvalitetsmål (CRF) | Lyd | Maks størrelse per time |
|---|---|---|---|---|---|
| 2160p | 3840x2160 | 16 Mbit/s | 20 | 192 kbit/s | 6,79 GiB |
| 1080p | 1920x1080 | 5 Mbit/s | 22 | 160 kbit/s | 2,16 GiB |
| 720p | 1280x720 | 2,8 Mbit/s | 23 | 128 kbit/s | 1,23 GiB |
| 360p | 640x360 | 0,8 Mbit/s | 26 | 64 kbit/s | 0,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øsning | Trinn som lages | Maks størrelse per time video |
|---|---|---|
| 4K (2160p) | 2160p, 1080p, 720p, 360p | 10,54 GiB |
| Full HD (1080p) | 1080p, 720p, 360p | 3,75 GiB |
| HD (720p) | 720p, 360p | 1,59 GiB |
| Under 360p | Én versjon i kildens størrelse | Avhenger 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.
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.