• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Videa - nové formáty a protokoly
#1
Ty, kteří laborují s novými formáty a protokoly pro přenos videí určitě ocení tento odkaz https://bitmovin.com/mpeg-dash-hls-examples-sample-streams/. Odkaz míří na web https://bitmovin.com/, který je s ohledem na uvedenou problematiku více než zajímavý. Já jsem si z něj vyzkoušel přehrát pár odkazů v Kodi, v souvislosti s tématem zmiňovaným v tomto přispěvku http://www.xbmc-kodi.cz/prispevek-konvertor-pro-streamy?pid=44323#pid44323 a bylo to více než užitečné.

Také díky informacím z tohoto webu, jsem si konečně mohl celkem bezezbytku ujasnil základní pojmy, jako jsou třeba HLS nebo DASH. Zajímá-li vás to, doporučuji se podívat sem https://bitmovin.com/mpeg-dash-vs-apple-...adobe-hds/.
 
Citovat
#2
JiRo: Ahoj, mám jednu otázku, ale nechci to tady rozebírat. Posílám ti zprávu
 
Citovat
#3
Rozhodl jsme se pokračovat v načatém tématu. Přivedl mě k tomu dotaz, jak přehrát v Kodi stream prezentovaný prostřednictvím MPEG-DASH protokolu. Zde je dotaz https://www.xbmc-kodi.cz/prispevek-spravne-pridanie-online-videa-cez-playlist?pid=64072#pid64072 a zde má odpověď https://www.xbmc-kodi.cz/prispevek-sprav...5#pid64075. Následně na to ještě další uživatel poukázal, že na serveru, který dané streamy poskytuje v protokolu MPEG-DASH, je možné získat totéž, ale v protokolu HLS. Samozřejmě, že se tedy objevila otázka, co je tedy lepší. Zda MPEG-DASH a nebo HLS.

Nehodlám tu dělat arbitra, aniž bych k tomu neuvedl několik objektivních faktů, a pro to je třeba se ponořit poněkud do problematiky. Chtěl bych tedy onu problematiku osvětlit. Pro ty, kteří vládnou angličtinou, doporučuji jeden z mých primárních zdrojů informací, ze kterého budu vycházet. Je to už pravda letitý článek od autora Christopher Mueller z 29.3. 2015, ale myslím, že pro naše potřeby stále ještě vhodný [1] MPEG-DASH vs. Apple HLS vs. Microsoft Smooth Streaming vs. Adobe HDS.

Adaptivní streamování

To, o co tady jde, se dá souhrnně označit jako technologhie adaptivního streamování http. V současné době jsou asi nejznámější čtyři (řazeno podle abecedy):
  1. Adobe HTTP Dynamic Streaming (HDS),
  2. Apple HTTP Live Streaming (HLS),
  3. Microsoft Smooth Streaming (MSS),
  4. MPEG Dynamic Adaptive Streaming přes HTTP (MPEG-DASH).
První tři jsou proprietální a za vznikem každé z nich stojí nějaké velká firma, třetí je mezinárodním standardem ISO. Co je ale důležité, že všechny čtyři dodržují základní principy adaptivní technologie, tedy že server nabízí klientovi více verzí obsahu, odlišující se některou z významných charakteristik (různá rychlost, rozlišení, apod.) a také to, že vlastní stream je serverem rozdělen na krátké segmenty (chunky), které si klient ze serveru stahuje na základě standardního HTTP požadavku GET.

To, co vlastně server pro daný stream nabízí, je popsáno v tzv. manifestu, který je méně (např. HLS) nebo více (např. MPEG-DASH) obsáhlý. Je to vlastně takové "menu", kterým server klientovi říká, co všechno mu může pro daný stream  v daném protokolu nabídnout. Klient tedy zahajuje komunikaci se serverem tím, že si řekne o manifest. Vybere se a pošle GET s formulovaným požadavkem. A to GET pak posílá pro každý segment a v každém GET si samozřejmě může parametry požadavku změnit. Může tak tím reagovat například na měnící se kvalitu spojení. Záleží tedy na tom, jaké funkce a schopnosti klient má. Jsou klienti, kde je implementace funkce adaptivního streamování velice triviální, ty například automaticky volí maximální kvalitu i rozlišení. Kodi má pro tyto účely ve svém standardním repozitáři Kodi Add-on repository, addon InputStream Adaptive, které pro Kodi videoplayer funkce adaptivního streamování vykonává. V jeho nastavení si můžete nastavit meze (min/max rychlost, min/max roslišení, atd.) nastavit. V jiných případech, např. Tvheadend nebo ffmpeg, se nastavení provádí samozřejmě jinak.

Když jsem už zmínil o ffmpeg, tak jedna odbočka. Velmi často se v případě použití metody pipe:// u Tvheadend, kde se použije ffmpeg volaný ve spuštěném scriptu, používá "trik", kdy se vybírá stream s nejvyšší rychlostí. To je v podstatě způsob specifického "adaptivního" streamování, které je ale v tomto případě potlačeno. Z manifestu se vybere určitý stream a ten se předhodí ffmpeg a přes něj Tvheadend. To už pak přijímá vždy a za všech okolností jen jednu, tu předem vybranou konkrétní verzi streamu.

Která technologie je lepší?

Na začátek přikládám přehlednou tabulku z odkazovaného článku. Je v en, ale myslím, že těch pár hesel dohromady dá každý. Pokud někdy bude čas, klidně tabulku přeložím. Tady v tom případě asi stáří zdroje [1] bude na závadu, protože některé položky u jiných než MPEG-DASH portokolu, už budou také označeny jako splněné.
[attachment=4995]
Nečekejte žádný detailní rozbor. Se dvěma technologiemi se vypořádám hned. Jsou to Adobe HTTP Dynamic Streaming (HDS) a Microsoft Smooth Streaming (MSS). Jejich rozšíření je minimální, kromě jiného také proto, že pro svoji serverovou část potřebují do tradičně používaných serverů doplnit další speciální moduly a funkce. Dále se tedy budu věnovat pouze HLS a MPEG-DASH. To také odpovídá současné situaci v oblasti adaptivního streamování, kdy spolu většinou soutěží pouze tyto dva protokoly.

HLS je, jak známo, "vynález" Apple. Tedy proprietální řešení, i když s ohledem na vliv této firmy na celkové dění ve světě, momentálně nejrozšířenější, a to i mimo okruh produktů firmy s nakousnutým jablkem ve znaku. Oproti svému konkurentu těží především z toho, že je na světě déle, a že ho také (z prestižních i konkurenčních důvodů) akceptovala většina výrobců SW. Jinak řečeno HLS stream dnes přehrajete téměř na všem. Původní návrh HLS se zaměřil pouze na prostředí a infrastrukturu i formáty Apple, což je důsledek filosofie a celkem běžná strategie této firmy. V okamžiku, kdy se HLS začalo šířit i mimo okruh Applu, přestaly původní definice stačit. A tak s každým dalším rozšíření formátů a přehrávaných kodeků, bylo (a stále je) třeba definici HLS rozšiřovat. Zatím to probíhá bez problémů, ale přináší to s sebou potřebu neustálé pozornosti a péče. I z tohoto důvodu v Apple řeší, jak definici HLS propojit s definicí svého konkurenta (za toho považuje hlavně MPEG-DASH) a vytvořit tak v oblasti adaptivního směrování více či méně společné a kompatibilní prostředí.

MPEG-DASH je výtvorem ISO, tedy standardizační organizace. ISO je moloch a jako takový má samozřejmě poněkud delší reakční dobu. A tak i se standardem adaptivního směrování přišlo později. Na druhou stranu, jak už to tak bývá, šli na to lidé z ISO od podlahy. Jejich protokol bez výjimky pokrývá dnes známé budoucí požadavky na funkce adaptivního streamování. Důležitým bodem pro tento protokol je i to, že ho používá i Hbb TV. Pokud budeme mluvit o nějaké objektivní výhodě, tak je to především to, že MPEG-DASH je označován jako tzv. "agnostic protocol". To znamená, že (co se týče kódování videa i audia) přenese v podstatě cokoliv. V tomto směru HLS bude MPEG_DASH vždy dohánět a vždy bude třeba, při přidání přenosu dalšího typu kódování, zásah do jeho struktury i definic protokolu. To v případě MPEG-DASH nebude nutné (či alespoň ne v takové míře, jestli vůbec).

Asi tedy čekáte na konečné rozhřešení. Který z nich je tedy lepší? Nedám vám ho. Je to jednak do jisté míry věc subjektivní, jednak pak i věcí toho, jakého klienta máte k dispozici. Ne všechny klienti zpracovávají streamy v různých protokolech stejně, klíčová je zjevně jejich schopnost efektivního výběru parametrů v případech měnícího se přenosového prostředí. A i to je do jisté míry záležitost subjektivní, často nereprodukovatelné a neopakující se. Někdo může tvrdit, že mu na jeho internetovém připojení běží lépe HLS, jiný bude tvrdit přesný opak, tedy že MPEG-DASH je tím jediným co používá. Je ale třeba si uvědomit, že toto rozhodování má smysl pouze tehdy, pokud tu možnost, vybrat si na zdroji streamů HLS nebo MPEG-DASH vůbec máte. V případě, na který jsem odkazoval výše (streamy kanálů Očko), tomu tak bylo. Uvedený server totiž nabízí jak HLS, tak MPEG-DASH. Rozdíl je pouze v adrese, kde adresa manifestu streamů HLS končí .m3u8 nebo .m3u, zatímco manifesty MPEG-DASH mají koncovku .mpd.

Pokud bych si však měl přeci jen vsadit, řekl bych, že větší budoucnost má MPEG-DASH. Jednak za ním stojí ISO, což je v oblasti standardů přeci jen těžší váha, jednak není úplně jisté, kde bude Apple za několik let. Nehledě na to, jak jsem už napsal, že se Apple překvapivě snaží ve svých definicích HLS přiblížit se k MPEG-DASH. To také na něco ukazuje.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)