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 jej možné nasadit na již existující infrastruktury a bez problému jej 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. Od té doby je protokol stále ve fázi draft, protože jej Apple stále upravuje.
Princip
Zá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
Videa 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 4 verzi protokolu byla přidána možnost videa nechat v jednom souboru a 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ů, třeba pro segmentaci.[2]
Na požádání vs. živě
Videa 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
Kaž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 a na různých server 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
Mobilní
Dí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 podporu i 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 a výše.[4]
Desktopové
Z 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.
Reference
- 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