HTTP Live Streaming
HTTP Live Streaming (známé také jako HLS) protokol pro streamování ohraničených či neohraničených multimediálních dat. Protokol byl představen společností Apple jako součást balíčku QuickTime, v době vydání verze mobilního operačního systému iOS 3 v létě 2009.
Jeho hlavní výhodou je možnost přizpůsobení datového toku aktuální propustnosti sítě. Všechny dotazy v rámci protokolu probíhají nad HTTP protokolem, proto je možné jej nasadit na již existující infrastruktury a bez problému nechat proudit přes firewally či proxy servery. Možné je také nasazení do sítí CDN.
Společnost Apple tento protokol dokumentuje a v roce 2009 z této dokumentace vznikl Internet-Draft a v roce 2017 byl vydán jako standard RFC 8216.
Princip
editovatZákladní princip HTTP Live Streaming protokolu je vytvoření několika různých kvalit požadovaného videa, které se na klientovi adaptivně načítají podle stavu sítě.
Zakódování audia a videa
editovatVidea se zakódují do MPEG-TS, který je určen pro přenos multimediálních dat. Každé takové video se následně rozdělí na malé segmenty, které umožňují například posouvání ve videu bez nutnosti čekání na stažení celého videa. Ve čtvrté verzi protokolu byla přidána možnost videa nechat v jednom souboru namísto segmentování, což umožňuje rychlejším sítím menší zátěž na komunikaci.[1]
Apple dává k dispozici sadu nástrojů na zpracování videí, které však nejsou dostupné pro ostatní platformy. Na internetu lze ale dohledat různé open-source varianty některých nástrojů potřebných pro segmentaci.[2]
Na požádání vs. živě
editovatVidea je možné zakódovat buď celá v době když jsou již hotová, nebo je možné je zakódovávat přímo takzvaně na živo. Rozdíl je pak v tom, že seznam segmentů neobsahuje ukončení a neustále roste. Je tak možné vytvářet videozáznamy z živých přenosů, které jsou rovnou k dispozici jako videa na vyžádání.
Playlisty
editovatKaždé video při segmentování vytváří seznam souborů, aby jej klient později mohl najít.
Formát tohoto seznamu je odvozen od formátu M3U, s tím rozdílem, že je kódován v UTF8, což mu do názvu přidává koncovku M3U8. Každé video je pak opatřeno ještě jedním takzvaným variantním playlistem, který obsahuje odkazy na jednotlivé varianty videa.
Příklad playlistu pro jedno konkrétní video:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
http://media.example.com/segment0.ts
#EXTINF:10,
http://media.example.com/segment1.ts
#EXTINF:10,
http://media.example.com/segment2.ts
#EXT-X-ENDLIST
V prvních verzích bylo možné mít videa v různých kvalitách na různých serverech s cílem co největší dostupnosti. Od verze 4 je možné mít u videa různé jazykové mutace zvukové stopy či různé verze obrazu, což je užitečné v případě, že je video natáčeno z více než jedné kamery najednou.
Videa je také možné v přenosu zašifrovat a to pomocí AES-128 klíčů. Video pak působí jako náhodný shluk dat.
Klienti
editovatMobilní
editovatDíky své adaptibilitě stavu sítě nachází protokol svoje uplatnění hlavně v mobilní sféře. Apple jej s uvedením iOS 3 integroval do mobilních zařízení iPhone a iPod Touch, o něco později pak přidal i podporu tabletu iPad. Všechny nativní aplikace pro iOS obsahující videa přesahující délku 10 minut či velikosti 5 MB musí využívat tento protokol, jinak může být aplikace zamítnuta v procesu přidání do App Store.[3] Na počátku roku 2011 přidala společnost Google podporu tohoto protokolu do platformy Android a to od verze 3 výše.[4]
Desktopové
editovatZ aplikaci pro osobní počítače podporu protokolu obsahuje již zmíněný QuickTime. Dále je videa pomocí tohoto protokolu schopen přehrát multimediální přehrávač VLC či Roku Digital Video Player.
HTML
editovatApple tento protokol také používá v aplikacích HTML 5, kde jej demonstrativně využívá ke sledování vlastních akcí.[5] V roce 2024 je tedy v čistém HTML videu podporován pouze v prohlížeči Google Chrome na operačním systému Android a Safari.[6] Pro ostatní prohlížeče existují různé varianty přehrávačů vytvořené v jazyku JavaScript.
Reference
editovat- ↑ Internet-Draft HTTP Live Streaming 13
- ↑ m3u8 segmenter
- ↑ HTTP Live Streaming Overview
- ↑ Android 3 Honeycomb highlights. developer.android.com [online]. [cit. 2011-11-07]. Dostupné v archivu pořízeném dne 2011-02-16.
- ↑ Apple Events
- ↑ HTTP Live Streaming (HLS) | Can I use... Support tables for HTML5, CSS3, etc. caniuse.com [online]. [cit. 2024-11-14]. Dostupné online.