HLS vs DASH: Hur streamingprotokoll faktiskt fungerar
Innan streaming blev vanligt betydde video på nätet att hela filen behövde laddas ner innan den kunde spelas upp. En video på 500 MB måste överföras i sin helhet, även om du bara ville se de första 30 sekunderna. Streamingprotokoll löser detta genom att dela videon i små segment som kan spelas upp medan resten laddas ner.
Segmentering: Byggstenen för streaming
HLS (HTTP Live Streaming, utvecklat av Apple) är det vanligaste protokollet. Servern delar upp videon i små segment, vanligtvis 2–10 sekunder långa, i MPEG-TS- eller fMP4-format. Den skapar även en spellista (.m3u8) som anger segmentens ordning och adresser. Spelaren hämtar först spellistan och sedan segmenten efter behov — när ett segment är klart hämtas nästa, nästan utan väntan.
Adaptiv bithastighet: varför uppspelningen inte stannar på ett svagt nätverk
Både HLS och DASH (Dynamic Adaptive Streaming over HTTP, som bland annat Microsoft har drivit på utvecklingen av) förbereder flera versioner av samma video med olika upplösningar och bithastigheter, till exempel 1080p, 720p och 480p. Versionerna anges i en huvudspellista. Spelaren övervakar överföringshastigheten och buffertnivån i realtid: den väljer en högre bithastighet när nätverket klarar det och en lägre när anslutningen försämras. Detta kallas adaptiv bithastighetsströmning (ABR) och förklarar varför videor ibland blir suddigare i tunnelbanan.
Varför det så ofta misslyckas att ladda ner en m3u8-länk
Om du laddar ner en .m3u8-URL direkt får du några kilobyte text — spellistan, inte själva videon. För att spara videon måste ett verktyg tolka spellistan, hämta alla segment och sammanfoga dem i rätt ordning. Därför saknar många nedladdare stöd för HLS eller kräver ett separat steg för att sammanfoga segment. TakeVid har inbyggd segmentdetektering och automatisk sammanfogning, så att resultatet blir en komplett fil som är redo att spelas upp.
- HLS: från Apple, använder .m3u8-spellistor, som stöds av iOS/Safari, hanterar både live och on-demand
- DASH: en öppen standard med .mpd-manifester, som används i stor skala av YouTube, Netflix och andra
- Båda kör på vanlig HTTP, är CDN-vänliga och dominerar streaming idag