• 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:
  • 5 Hlas(ů) - 3.4 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu
#54
Situace kolem připojení OTT služeb k Tvheadendu se příliš nelepší. Sice k těm již existujícím přibylo pár nových, ale jejich dokumentace, správa a údržba, stejně jako přístupnost pro uživatele, se příliš nezlepšila. Snažím se tomu nějak pomoci a tak jsem založil nové téma OTT služby v Tvheadend rozcestník, ve které bych chtěl shromáždit jak základní informace o dostupných OTT službách, tak o řešeních, které tyto služby umožní připojit do Tvheadend. To je jedna stránka věci. Tou druhou jsou mé vlastní aktivity, v rámci kterých se snažím vytvářet nebo se na vytváření připojení OTT služeb do Tvheadend podílet. Pár takových aktivit mám více či méně úspěšně za sebou (O2TV, Sledovanitv.cz, Sledovanietv.skKuki, Digi, LepšíTV)  a pár bych, myslím si, byl ještě schopen realizovat. Když se ohlédnu, musím konstatovat, že ani já jsem, co se týče dokumentace a přístupnosti pro uživatele, toho zatím moc neudělal. A tak jsme se rozhodl, že své typické řešení obecně popíši a pak k němu budu připojovat jednu službu po druhé, samozřejmě až poté, co ji aktuálně obecnému řešení přizpůsobím. Mým cílem je, aby všechna řešení měla pokud možno podobnou strukturu a byla jednoduše pochopitelná jak pro ty, kteří je budou používat, tak pro ty, kteří se rozhodnou podle nich třeba vytvořit připojení pro služby další nebo v případě potřeby provedení nějaké změny, ji provedou sami. S těmi změnami a úpravami (vyvolanými například změnou na straně služby), je totiž potíž. Já většinou postupuji tak, že si danou službu pořídím (často v nějaké odlehčené variantě), vytvořím řešení a poté, co mi vyprší zakoupené období ji už dále neprovozuji. Dojde-li k nějakým problémům, nejsem pak schopen reagovat patřičně operativně. Proto mám zájem, aby se o danou problematiku zajímalo více lidí, nejen z pozice prostého uživatele, ale také toho, kdo dokáže v případě potřeby zajistit další údržbu a třeba i rozvoj.

Přemýšlel jsem také, zda nemám založit nové téma, ale s ohledem na to, že nevím, jak bude pro ostatní zajímavé, schovám ho zatím v tomto tématu, který v podstatě za stejným účelem kdysi založil @mobilemanic.

Obecný popis řešení

Má řešení jsou postavena na maximálním využití standardních funkcí systému. Kromě celé řady obvyklých linux aplikací (grep, sed, tr, ...) používám prostý sh shell, aplikace jako je wgetffmpeg a také (sice zatím ne příliš rozšířenou) aplikaci jq (pro parsování json datových struktur). Snažím se vytvářet jednoduché a čitelné scripty, určené vždy pouze pro logicky propojenou množinu funkcí. Nepoužívám žádné knihovny ani žádné společné scripty, chci aby každé řešení bylo zcela autonomní a jediné, co by je spojovalo, je stejný princip funkce a svým způsobem i můj rukopis tvorby. To hlavně proto, abych mohl využívat nabyté zkušenosti z jednoho řešení i u těch ostatních.

Řešení je distribuováno ve formě zip souboru, který se zobrazí do zvoleného adresáře. Předpokládá se, že tento adresář bude používán výlučně por potřeby daného řešení. Víceméně (spíše více než méně) by tento adresář měl být lokální na stroji, na kterém běží i Tvheadend.

Jednotlivé scripty jsou díky své jednoduchosti víceméně samo popisné. Protože se uživatelské parametry a přizpůsobení por konkrétní použití zadává do každého scriptu, je vždy v úvodu každého scriptu část označená jako zadání uživatelských parametrů. Jenom v této části by se měli uživatelé bez ambicí podílet se na vývoji nebo si funkce nějak upravit, pohybovat.

Řešení je možné rozdělit do třech typů (odpovídajících popisu ve výše uvedeném rozcestníku):
  • download - stažení playlistu s adresami streamů přímo ze serveru služby. Toto řešení se v podstatě téměř nepoužívá a jen málo OTT služeb ho nabízí. 
  • playlist - periodická generace playlistu s adresami streamů, případně kombinace obecného (general) playlistu (s voláním streameru) a generického playlistu (co je to generický palylist popíšu dále)
  • onthefly - jednorázová generace nebo ruční vytvoření playlistu a „ontheflay request“ (například ve volaném streameru) o aktuální stream přímo serveru služby
V mých řešením najdete prakticky pouze poslední dva typy. Případně jejich kombinaci, protože u některých je (bude) možné použít oba způsoby řešení.

Skupiny funkcí

Ne všechna řešení nabízí všechny funkce. Někde proto, že ještě nejsou realizovaná, někde proto, že pro dané řešení nejsou potřeba.

Přihlášení a registrace zařízení

Většinou je vše (či většina) funkcí realizována scriptem login.sh. V jeho zadání uživatelských parametrů se zadávají takové údaje jako username, pasword, jméno zařízení, jeho další identifikace, registrační kód, atp. U některých řešení (kde to ještě není realizováno nebo jsou s realizací spojené nějaké potíže), může být přihlášení a registrace provedena v jiném prostředí (například v oficiální mobilní či webové aplikaci dané služby) a do scriptu je pak zadán pouze příslušný registrační kód. Výsledky autentizace, získané autentizační kódy jsou zpravidla uloženy do textového souboru (typické jméno access.id), kde jsou k dispozici pro ostatní funkce (scripty) daného řešení.

Přihlášení a registrace se většinou provádí jen jednou, spouští se ručně (tedy pokud není součástí "onthefly" řešení - ale to je spíše výjimka a řeší se většinou jakou součást funkce Refresh nebo Streamer, viz dále).

Stažení EPG

Většinou je realizováno scriptem epg.sh. Většinou jde zatím o experimentální funkci. Cílem je dosáhnout toho, že se pro danou službu stáhnou EPG data pro kanály, které tato služba poskytuje, a to přímo ze serveru služby, a vygeneruje se xmltv soubor, který je pak použitelný přímo jako zdroj pro interní nebo externí graber Tvheadend. Xmltv soubor může být také zpracován Webgrab++ aplikací.

S ohledem na funkci by měl být tento script spouštěn periodicky (cron) podle potřeb uživatele a hloubky dat, které daný server poskytuje.

Vytvoření playlistu

Většinou realizované scriptem playlist.sh. Funkce scriptu je odlišná podle typu řešení. Jiná je v typu playlist, jiná onthefly. Zatímco v prvně jmenovaném se zpravidla vytváří dva playlisty, generický playlist (generic) obsahující přímo adresy streamů a pak obecný playlist (general) s voláním scriptu streamer.sh (viz dále), v tom druhém se vytváří pouze obecný playlist s voláním scriptu streamer.sh.

Spouští se jednorázově ručně, případně opakovaně pro potřeby aktualizace rozsahu nabízených kanálů. V některých případech může být spouštěno v rámci funkce obnovy tokenů (viz dále).

Obnova autentizace a/nebo tokenů

Většinou realizované scriptem refresh.sh. Jeho úkolem je periodická obnova autentizace a/nebo tokenů V případě tokenů může být následována automatickým spuštěním generace playlistu. Záleží na typu řešení a zvoleném způsobu autentizace a obnovy. Z logiky věci tato funkce nemusí být u některých (zejména onthefly) řešení vůbec realizována.

Spouští se periodicky (cron).

Streamer

Výkonný script streamer.sh, obsahuje zpravidla volání ffmpeg (nebo jiné podobné aplikace). Spuštění předchází sestavení adresy streamu podle klíče (identifikátor kanálu) předávaného jako parametr z Tvheadend. Spouští ho metodou pipe:// přímo Tvheadend při scanu muxů (kanálů) nebo při přepnutí (ladění) kanálu. U řešení typu playlist probíhá sestavení adresy streamu prakticky tak, že se pouze podle klíče vybere příslušná adresa z generického playlistu. U řešení typu onthefly se na základě hodnoty klíče sestaví request na server služby, který jako odpověď vrátí adresu streamu. Script může, kromě sestavení adresy streamu, dotazu a zpracování odpovědi serveru a spuštění ffmpeg provádět i další činnosti, podle typu a charakteru služby.

Při volbě způsobu řešení a tvorbě scriptu je třeba dbát na to, že vykonávané funkce a délka jeho běhu ovlivňuje významně rychlost scanování a přepínání kanálů.

Je spouštěn z Tvheadend.

Cache

Cache se může použít u těch řešení, kde je třeba (a je to možné) nějak urychlit časově kritické části (scripty), zpravidla ty řešené jako onthefly. Vyváží se tím nevýhoda tohoto řešení, jež plyne z toho, že se o finální adresu streamu (nebo manifestu) říká až streamer, což někdy může prodloužit dobu přepínání kanálu. Má-li dané řešení tuto možnost, zpravidla je možné ji použít jako alternativu. Použití cache je spojené s analýzou struktury adresy streamu (zjišťuje se platnost vygenerované adresy) a pokud provider tuto strukturu změní, přestane to fungovat. Proto je vhodné mít možnost používání cache obejít. Cache funguje tak, že streamer ověří, zda pro daný kanál existuje cache soubor, pokud ne, řekne si rovnou o adresu streamu, vytvoří cache soubor a adresu do něj uloží. Pokud zjistí, že cache existuje, načte si z ní adresu a zjistí, zda je platná a pokud ne, opět si řekne o novou. Z toho plyne, že cache má smysl pouze u těch služeb, které do adresy streamu ukládají časovou identifikaci její platnosti. Buď rovnou dobu platnosti nebo dobu, kdy byla adresa vytvořena. Doba platnosti je pak daná nějakou hodnotou platnou pro danou službu (například 24 hodin). Je zřejmé, že pokud dojde k přepnutí na daný kanál po době uplynutí platnosti cache, doba přepnutí kanálu se v tomto případě naopak o něco prodlouží.

Popis konkrétních řešení

V dalších postech tohoto tématu budu postupně zveřejňovat jednotlivá řešení podle výše uvedeného popisu.

Aktuální stav zveřejněných řešení:
  • O2TV (Nangu-TV) - asi nejpropracovanější řešení. Je to hlavně proto, protože ho sám používám. I když jen v podobě tarifu Sport. Je to zároveň jakási výchozí aplikace pro řešení OTT od Nangu-TV, které používají i další provideři. 
  • T-Mobile TV (Nangu-TV)  - de facto kopie řešení O2TV, upravené v těch částech, ve kterých se implementace Nangu-TV pro tohoto operátora liší.
Mám v plánu dále postupně uvést řešení pro:
  • Sledovanitv.cz
  • Sledovanietv.sk
  • Kuki
  • Digi (4NET platforma)
  • Poda (4NET platforma)
  • LepšíTV
Všechna tato řešení již existují, i když ne v podobě, jak je uvedeno výše, a jsou k dispozici v různých částech tohoto fóra. Původně jsem je chtěl postupně sjednotit, protože většina z nich vznikla v dřívějších dobách, ještě před výše uvedeným obecným popisem řešení. Ale ukazuje se, že vzhledem k času a mé kapacitě to není reálné. Proto k výše uvedenému seznamu přidám postupně pouze odkazy na místa, kde je řešení popsáno.
 
Citovat
  


Příspěvků v tématu
RE: Připojení CZ/SK poskytovatelů OTT IPTV k TVHeadendu - od Client - 12.5.2019, 21:38
tvheadend o2tv epg - od renda61 - 26.6.2020, 9:09

Přejít na fórum:


Prochází: 1 host(ů)