HLS kontra DASH: Jak faktycznie działają protokoły przesyłania strumieniowego
Przed pojawieniem się streamingu oglądanie filmu online oznaczało jedno: najpierw pobrać cały plik, a potem go odtworzyć. Film o rozmiarze 500 MB musiał w całości trafić na urządzenie, nawet jeśli interesowało Cię tylko pierwsze 30 sekund. Protokoły strumieniowe rozwiązują ten problem: dzielą film na małe fragmenty i odtwarzają je, gdy reszta wciąż się pobiera.
Segmentacja: podstawa transmisji strumieniowej
W najpopularniejszym protokole HLS (HTTP Live Streaming, opracowanym przez Apple) serwer dzieli film na wiele małych plików — segmentów, zwykle o długości 2–10 sekund, w formacie MPEG-TS lub fMP4. Tworzy też listę odtwarzania .m3u8 z ich kolejnością i adresami. Odtwarzacz najpierw pobiera listę, a potem kolejne segmenty na żądanie, niemal bez czekania.
Adaptacyjna przepływność: dlaczego odtwarzanie nie zacina się przy słabym łączu
HLS i DASH (Dynamic Adaptive Streaming over HTTP, wspierany przez Microsoft i inne firmy) przygotowują kilka zestawów segmentów tego samego filmu w różnych rozdzielczościach i przepływnościach — na przykład 1080p, 720p i 480p — wskazanych w liście głównej. Odtwarzacz na bieżąco monitoruje prędkość pobierania i zapełnienie bufora: wybiera wyższą przepływność przy dobrym łączu i niższą, gdy warunki się pogarszają, aby nie przerywać odtwarzania. To streaming z adaptacyjną przepływnością (ABR). Właśnie dlatego obraz automatycznie traci ostrość podczas jazdy metrem.
Dlaczego pobieranie łącza m3u8 tak często kończy się niepowodzeniem
Bezpośrednie pobranie adresu .m3u8 daje zaledwie kilka KB tekstu — listę odtwarzania, a nie film. Aby zapisać wideo, narzędzie musi przeanalizować listę, pobrać wszystkie segmenty i połączyć je w odpowiedniej kolejności. Dlatego wiele programów nie obsługuje HLS lub wymaga osobnego etapu łączenia segmentów. TakeVid ma wbudowane wykrywanie segmentów i automatyczne łączenie, więc pobierasz kompletny plik gotowy do odtwarzania.
- HLS: opracowany przez Apple, używa list .m3u8, jest natywnie obsługiwany przez iOS/Safari i działa z transmisjami na żywo oraz na żądanie
- DASH: otwarty standard z manifestami .mpd, używany na masową skalę przez YouTube, Netflix i inne firmy
- Obydwa korzystają ze zwykłego protokołu HTTP, są przyjazne dla CDN i dominują obecnie w streamingu