Sadržaj

HLS (HTTP Live Streaming) protokol

Sažetak

Tijekom prijenosa i gledanja videa na Internetu korisnici su dugo ovisili o dodacima treće strane, no pojava standardiziranih protokola omogućila je direktnu ugradnju video elemenata u web stranice te korisnici preglednika više ne ovise o takvim dodacima.

Jedan od dominantnih načina prijenosa videa u realnom vremenu, pogotovo u jednosmjernoj komunikaciji s više gledatelja, postao je HLS (HTTP Live Streaming) protokol koji za prijenos videa na mrežnoj razini koristi HTTP protokol.

Arhitekturu HLS protokola čine poslužitelj koji priprema ulazni video stream za distribuciju korisnicima, distributeri koji primaju zahtjeve od korisnika te im dostavljaju komponente bitne za gledanje i klijenti koji primaju od distributera komponente videa te ih prikazuju korisnicima.

U odnosu na ostale live streaming protokole koji su široko korišteni, HLS ima određene prednosti i mane te slučajeve u kojima je njegovo korištenje optimalno. Glavne prednosti HLS protokola su visoka kompatibilnost, visoka stabilnost veze i prilagodljiva kvaliteta videa za korisnike, a njegova je glavna mana relativno veliko kašnjenje koje onemogućuje dvosmjernu komunikaciju u realnom vremenu.

Slučajevi u kojima je optimalno koristiti HLS protokol su svi prijenosi videa većem broju gledatelja u kojima ne treba postojati dvosmjerna komunikacija i u kojima kašnjenje nije presudno.

Keywords: HLS; HTTP Live Streaming; HLS arhitektura; HLS Wireshark; Prednosti HLS protokola; Mane HLS protokola; Slučajevi korištenja HLS protokola

Uvod

Ranije su tijekom prijenosa videa na Internetu korisnici svih preglednika ovisili o dodacima treće strane poput Abode Flash video tehnologije, no cijeli je proces pojednostavljen uvođenjem standardiziranih video streaming protokola koje je omogućilo ugradnju video elementa koji je izvorno podržan u internetskim preglednicima u HTML kod web stranica te korisnici preglednika više ne ovise o dodatnim tehnologijama za prijenos videa kao što je Adobe Flash.

HTTP Live Streaming (skraćeno HLS) je streaming komunikacijski protokol s prilagodljivim bitrateom baziran na HTTP-u, kojeg je razvila tvrtka Apple i koji je u svojoj prvoj verziji objavljen u 2009. Podrška za taj protokol široko je rasprostranjena među media playerima, internetskim preglednicima, mobilnim uređajima i poslužiteljima za streaming različitih vrsta medija, a u 2019. je godišnja anketa video industrije ustanovila da je HLS uvjerljivo najpopularniji streaming protokol.

HLS nalikuje MPEG-DASH tehnici koja funkcionira tako da rastavlja cjelokupni video stream u sekvencu manjih preuzimanja datoteka zasnovanih na HTTP-u, pri čemu svako preuzimanje donosi jedan fragment (chunk) kontinuiranog i potencijalno neograničenog transportnog streama. Lista dostupnih streamova enkodiranih različitim bitrateovima šalje se korisniku koristeći multimedijsku M3U playlistu, a na klijentu se tada emitira video čiji je bitrate najviši mogući s obzirom na kvalitetu njegove internetske veze.

Budući da je baziran na standardnim HTTP transakcijama, HTTP Live Streaming protokol prolazi kroz vatrozide ili posredničke poslužitelje koji propuštaju standardni HTTP promet, za razliku od protokola baziranih na UDP prometu kao što je RTP. To također omogućuje da se tako prenošen sadržaj nudi putem konvencionalnih HTTP poslužitelja te distribuira putem široko dostupnih mreža za dostavu sadržaja baziranih na HTTP protokolu. HLS standard također uključuje standardne mehanizme šifrirana i razmjene ključeva koristeći HTTPS, što sve pruža jednostavni DRM sustav, a kasnije verzije protokola također podržavaju i premotavanje videa te integraciju titlova.

Arhitektura HLS protokola

HTTP Live Streaming koristi konvencionalni internetski poslužitelj kako bi distribuirao audiovizualni sadržaj te zahtjeva specifičnu programsku podršku i arhitekturu kako bi omogućio ispravan prijenos u realnom vremenu u skladu sa zadanim standardom.

Arhitektura servisa u kontekstu HLS protokola uključuje poslužitelja, distributera i klijenta (Slika 1).

Poslužitelj enkodira i enkapsulira ulazni video u format primjeren za dostavu koji se onda priprema na distribuciju rastavljanjem u više datoteka (segmenata), a u procesu ulazne obrade video je enkodiran i rastavljen kako bi se generirali video fragmenti i indeksna datoteka koja sadrži reference na fragmente.

Glavne komponente poslužitelja su enkoder i segmenter.

Enkoder ima ulogu enkodirati video datoteke u H.264 format te audio u AAC, MP3, AC-3 ili EC-3 format te sve enkapsulirati u tok podataka tipa MPEG-2 Transport Stream ili MPEG-4_Part_14 kako bi se enkodirani video mogao uspješno prenositi.

Segmenter dijeli tok podataka u fragmente jednake duljine i također kreira indeksnu datoteku koja sadrži reference na odgovarajuće .ts (transport stream) fragemente, a pohranjena je s .m3u8 ekstenzijom.

Distributer je oblikovan kao standardni internetski poslužitelj koji prima zahtjeve od klijenata i dostavlja sve potrebne resurse potrebne za HLS streaming koji uključuju .m3u8 playlistu i segmente datoteke ekstenzije .ts.

Klijent šalje zahtjeve te preuzima sve datoteke i resurse te ih sastavlja tako da su korisniku prezentirani kao kontinuirani video. Klijentski program prvo preuzima indeksnu datoteku putem zadanog URL-a, a nakon toga nekoliko dostupnih transport stream datoteka čiji slijed program za playback pretvara u kontinuirani video koji će se u konačnici prikazati korisniku.

Slika 1: Arhitektura HLS protokola

Filtriranje HLS prometa Wireshark alatom

Promet nastao HLS protokolom može se snimiti alatima za snimanje mreže kako što je Wireshark. Očekivani proces povlačenja HLS streama na mrežnoj razini je sljedeći:

Prvo se šalje GET zahtjev kojim se dohvaća sadržaj .m3u8 indeksne datoteke koja sadrži reference na .ts fragmente koji se trenutno mogu dohvatiti sa servera. Zatim se u svrhu dohvaćanja fragmenta šalje GET zahtjev kojim se dohvaća njegova .ts datoteka te odgovor zahtjeva vraća njegov cijeli sadržaj, a nakon što je dobiveni sadržaj prikazan u video playeru, šalje se novi HTTP GET zahtjev za dohvaćanje sljedećeg fragmenta, pri čemu je svaki zahtjev kratka konekcija koja ne čuva stanje.

Kako bi se filtrirao HLS promet, u Wireshark programskom alatu potrebno je filtrirati sve HTTP poruke koje u sebi sadrže “ts” (Slika 2). Vidljivo je da postoji jedan odgovor u čijem je tijelu sadržaj tipa application/x-mpegurl i koji ima kod odgovora 206 (Partial Content), a taj odgovor predstavlja indeksnu datoteku .ts fragmenata trenutno dostupnih unutar streama koji kontinuirano pristiže. Nakon odgovora koji sadrži tu datoteku, vide se naizmjenično poruke GET zahtjeva koji dohvaćaju određene datoteke s ekstenzijom .ts te odgovori u čijem je tijelu sadržaj tipa video/mp2t (MPEG transport stream) za svaki od tih fragmenata.

Nakon toga je HTTP poruke unutar filtriranog prometa moguće prikazati u listi te je indeksnu datoteku kao i svaki pojedini .ts fragment moguće izvesti i pohraniti za detaljnije proučavanje sadržaja HLS prometa (Slika 3).

Slika 2: Filtriranje HLS prometa

Slika 3: Pohrana HLS prometa

Prednosti i mane HLS protokola

Jedna od ključnih prednosti ovog protokola vezana je za njegova svojstva kompatibilnosti. Za razliku od drugih streaming formata, HLS je kompatibilan s iznimno širokim rasponom uređaja i vatrozida.

Druga ključna prednost je prilagodljivost kvalitete video streama ovisno o mrežnim okolnostima, zbog čega se HLS dodatno ističe među drugim protokolima. Na poslužiteljskoj strani, kreatori sadržaja često imaju mogućnost enkodirati isti live stream u više različitih postavki kvalitete, što uključuje rezoluciju i bitrate video streama. Rezultat je da gledatelji mogu dinamički zahtijevati najbolju moguću opciju kvalitete s obzirom na njihovu mrežnu propusnost i performanse uređaja, odnosno playera u svakom trenutku. Na razini svakog fragmenta videa, kvaliteta se može mijenjati kako bi bila optimizirana za mogućnosti pojedinog korisnika. Primjerice, ukoliko kreator sadržaja objavljuje video visoke definicije kojeg gleda korisnik mobilnog uređaja te korisnik iz područja dobre mrežne pokrivenosti i velike propusnosti prijeđe u područje u kojem kvaliteta usluge značajno degradira, video player će detektirati pad mrežne propusnosti i umjesto fragmenata visoke definicije zahtijevati fragmente niže kvalitete kako bi se kontinuitet videa mogao održati.

Glavna mana standardnog HLS protokola koja se svakako mora uzeti u obzir prilikom objave bilo kakvog video sadržaja ili dizajniranja usluge za prijenos video sadržaja je relativno veliko kašnjenje u odnosu na druge streaming protokole. Budući da HLS protokol mora kreirati buffer od 3-4 fragmenta od kojih svaki traje desetak sekundi, to kašnjenje može biti veće i od 30 sekundi, što značajno može pogoršati korisničko iskustvo kod mnogih prijenosa videa. Kašnjenje HLS streama moguće je smanjiti smanjivanjem veličine video fragmenata, odnosno segmenata, čime se skraćuje njihovo trajanje te se pritom smanjuje i veličina buffera, no i u tom slučaju fragmenti i dalje traju 2-6 sekundi, što ostavlja kašnjenje značajno veće od mnogih drugih protokola, a smanjivanje veličine segmenata također može negativno utjecati na stabilnost prijenosa videa u nešto lošijim mrežnim uvjetima.

Za usporedbu (Slika 4), tipična kablovska televizija ima kašnjenje u rasponu od 5 do 10 sekundi, interaktivni game streaming ima prihvatljivo kašnjenje od jedne do maksimalno 5 sekundi, optimizirana verzija HLS-a s niskim kašnjenjem može ostvariti kašnjenje od oko 2 sekunde, a WebRTC (Web Real-Time Communications) protokol teoretski može ostvariti kašnjenje manje od jedne sekunde.

Slika 4: Kašnjenja različitih streaming protokola

Slučajevi korištenja HLS protokola

Zbog relativno velikog kašnjenja u odnosu na ostale streaming protokole, za bilo koju primjenu koja zahtjeva kašnjenje manje od jedne sekunde, poput video poziva, web konferencija, upravljanja kamerama, dronovima ili drugim uređajima u realnom vremenu te primjena u kojima je malo kašnjenje presudno za kvalitetno korisničko iskustvo, HLS protokol je neprihvatljiv, čak i u svojim novijim verzijama koje omogućuju nešto manje kašnjenje poput Apple Low-Latency HLS protokola. Za takve primjene primjereniji je protokol kao što je WebRTC (Web Real-Time Communications).

Za sve ostale prijenose videa uživo u kojima je visoka kvaliteta i stabilnost bitnija od vremena kašnjenja trebao bi se koristiti HLS protokol.

Budući da je HLS protokol trenutno najšire rasprostranjeni protokol za streaming medija te ujedno i najpopularniji među kreatorima sadržaja (Slika 5), najbolji je izbor protokola za emitiranje u realnom vremenu koji će stream učiniti podržanim za veliku većinu gledatelja, pogotovo u slučajevima kad je kvaliteta ključni čimbenik, poput prijenosa javnih smotri i sportskih događaja.

Dodatno, rastom potpore Apple Low-Latency HLS protokola, kašnjenje manje od dvije sekunde postaje sve više uobičajeno, čine uporaba HLS protokola postaje moguća i za interaktivni streaming, online live klađenje, gaming i mnoge ostale primjene u kojima je takvo kašnjenje prihvatljivo.

Prilikom prijenosa koji treba biti dostupan na mobilnim uređajima HLS je iznimno važan zbog njegove dobre podrške koja za veliki broj drugih protokola na većini mobilnih uređaja nije dostupna. Također, poželjno je da svi sustavi koji koriste zastarjele, nesigurne i slabo prilagodljive mehanizme prijenosa videa na Flash playere putem RTMP protokola prijeđu na HLS protokol.

Slika 5:Popularnost HLS protokola

Zaključak

Ovisnost o dodacima trećih strana za prikaz ili objavu videa u internetskim preglednicima sve je manje učestala, a standardi kojima se uvode različiti streaming protokoli izvorno podržani u preglednicima sve su više prihvaćeni te dolazi do njihove sve šire i jednostavnije primjene.

Različiti slučajevi korištenja nameću različite prioritete te je ponekad bitnije izrazito nisko kašnjenje uz nužnu pretpostavku da je internetska veza dobra i stabilna, a ponekad stabilnost i kvaliteta koji će omogućiti pouzdani i kontinuirani prikaz video streama i u lošijim mrežnim uvjetima, ali uz prihvaćanje neizbježnog kašnjenja.

HLS protokol se zbog brojnih prednosti i relativno jednostavne implementacije koristi u slučajevima bitne stabilnosti i kvalitete kad visoka interaktivnost i prijenos u realnom vremenu nisu posve bitni, kao što je prijenos sportskih događaja, no napretkom samog standarda i smanjenjem kašnjenja uz zadržavanje iste razine kvalitete primjene naprednijih verzija tog protokola postaju puno šire te je HLS moguće koristiti i za nešto interaktivnije primjene poput gaminga.

Uz vrlo jasnu i javno poznatu arhitekturu i specifikaciju HLS protokola moguće je njegovo lakše proučavanje koje je vrlo zanimljivo sa stajališta mrežne forenzike te koje sudjelovanjem zajednice može dovesti do ideja za daljnja unaprijeđenja i stvaranja novih prilika za široke primjene.

Literatura

[1] Max Wilbert, 6.1.2021., What is HLS Streaming and When Should You Use It?, Preuzeto 15.1.2021.,https://www.dacast.com/blog/hls-streaming-protocol

[2] Wikipedia, 21.12.2020., HTTP Live Streaming, Preuzeto 13.1.2021.,https://en.wikipedia.org/wiki/HTTP_Live_Streaming

[3] Traci Ruether, 7.5.2020., What Is HLS (HTTP Live Streaming)?, Preuzeto 13.1.2021., https://www.wowza.com/blog/hls-streaming-protocol

[4] Apple, 1.3.2016., HTTP Streaming Architecture, Preuzeto 13.1.2021.,https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html

[5] Unified Streaming, How to achieve low latency with what you've got, Preuzeto 13.1.2021.,https://www.unified-streaming.com/blog/low-latency-with-what-youve-got

[6] Uroš Stanimirović, 9.9.2020., The Ins and Outs of HTTP Live Streaming Protocol (HLS), Preuzeto 13.1.2021.,https://www.brid.tv/the-ins-and-outs-of-http-live-streaming-protocol-hls

[7] ProgramerSought, Method for extracting TS files in HLS in Wireshark, Preuzeto 13.1.2021.,https://www.programmersought.com/article/61411228855