• 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:
  • 2 Hlas(ů) - 1.5 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
iVysílání
#71
Protože se chystám projekt iVysílání obnovit, věnoval jsem se včera po západu zatmělého Slunce analýze toho, jaké možnosti má dvojice Tvheadend - Kodi k tomu, aby šlo dynamicky ovládat zobrazení kanálů. Jak jsem tady už dříve popsal mé dosavadní řešení, používal jsem k ovládání zobrazení kanálů v Kodi jejich nastavení enabled/disabled v Tvheadend. Mělo to ale svá úskalí, protože změna stavu se do Kodi bez dalších kroků automaticky nepřenesla. Řešil jsem to malým scriptem v Kodi, který dokázal zjistit, jestli nějaký kanál změnil svůj stav a pokud ano a neprobíhalo právě nějaké přehrávání PVR obsahu, restartoval jsem Kodi PVR. Pokud v té chvíli přehrávání PVR běželo, proběhl restart až po jeho ukončení. Mělo to ale jedno zásadní úskalí. Restart PVR je velmi "choulostivá akce", která zcela náhodně a jen někdy skončí zamrznutím Kodi. Ostatně, patrně kvůli tomu team Kodi zřejmě vnitřní příkaz RestartPVR() kdysi zrušil.

Vyzkoušel jsem tedy pár dalších postupů, jak to vyřešit, aby to bylo co nejméně "bolestivé" a bez rizik, a abych i pro  ostatní identifikoval potenciální možnosti řešení a jejich výsledné chování, tak tady je jejich stručný popis (včetně toho původního, tedy enable/disable kanálu:
  1. enable/disable kanálu - do Kodi se sice občas nějaká změna stavu enable/disable dostane, ale je to zcela náhodné, asi tak v poměru 1:20 (úspěch:neúspěch), což je pro praktické použití zcela nedostačující. Doplnění výše uvedeného scriptu v Kodi sice tento problém odstraní, ale zase tam přidá jiný, občasné zamrznutí Kodi. Tak je poměr trochu jiný, a opačný, cca 1:30 (kodi zamrzne:nezamrzne).
  2. dynamická změna tag-u kanálů - kdy kanálům, které v Kodi nechci zobrazit, smáznu jejich tagy a nastavím jim zvláštní tag Skrytý. V Kodi to pak znamená trochu přeparametrovat skupiny kanálů. Potíž je ale v tom, že i když to vypadá na první pohled dobře, tak se změna tagu a z ní plynoucí přeřazení ze skupiny do skupiny do Kodi spolehlivě dynamicky nepřenese. V podstatě je to stejný problém jako u předchozího případu.
  3. dynamické mapování kanálů - tady to byla jen idea, kterou jsme ani nezkoušel, protože její podmínkou bylo, že najdu odpovídající funkce v Tvheandend Json api. To se mi ale nepodařilo. Ručně, přes webgui, se mi ten proces podařilo nasimulovat a fungoval správě i na straně Kodi, ale to bylo pro praktické použití málo.
  4. dynamická generace playlistu - bylo tedy to poslední, co jsem vyzkoušel a potvrdilo se, že to jediné může fungovat spolehlivě. Ve svém důsledku to vlastně vede ke stavu, jako v předchozím bodě, jen je celé řešeno pouze na úrovni primárních dat, tedy playlistu, ale celý proces zrušení/vytvoření kanálu je zcela v režii Tvheadend a co je hlavní, nepřináší téměř žádná rizika a má jen jeden drobný nedostatek.

Takže k vlastnímu popisu konečného řešení

Primárním krokem je dynamické vytváření obsahu playlistu podle toho, které kanály chci, aby se v Kodi zobrazily. Pak musí následovat nastavení Tvheadend takové, aby se:
  • playlist testoval v dostatečně krátké periodě. Toho se dosáhne vhodnám nastavení v network, která danou službu (iVysílání) přijímá. Konkrétně jde o parametr Re-fetch period (mins). Je zjevné, že nastaven by měl být v souladu s nastavení periody aktualizace EPG.
  • při změně obsahu playlistu (přidání/odebrání kanálu) provedl řetezec následných kroků: vytvoření/odebrání muxu, vytvoření/odebrání service a nakonec i vytvoření/zrušení kanálu. Toho se dosáhne snadno s pomocí vytvoření, a pro danou network správným nastavením, bouquets.
Stav kanálu, vytvořen/zrušen, se pak do Kodi přenese vždy spolehlivě, což ale neznamená, že by toto řešení nemělo háček. V okamžiku, kdy se nový kanál vytváří a probíhá jeho scan, může se stát, že neproběhne správně. Takový kanál se pak do celého řetězce, tedy service - kanál - Kodi, nepropíše. Všichni to známe, že scan nemusí dát vždy 100% výsledky, i když zdroj je v pořádku. Tady je většinou pomoc snadná, stačí v network natáhnou hodnotu parametru Maximum timeout (seconds). Pro network iVysílání ji teď mám nastavenou na 20 vteřin a zdá se, po několika desítkách pokusů, že scan všech přidaných kanálů teď proběhne vždy správně.

Tady to asi vyžaduje ode mne jisté vysvětlení, protože každého napadne, proč jsem tento postup nepoužil hned zpočátku. Důvodem byl můj špatný odhad toho, co je a co není důležité nebo podstatné. Ze zkušenosti s Tvheadend vím, že proces vytváření kanálu může být rizikový a také nějakou chvíli trvá. A mě v té souvislosti napadlo, že místo toho použiji jednoduché, spolehlivé a rychlé enable/disbale kanálu. Špatná úvaha, která vedla ke komplikovanému a jak se nakonec ukázalo i výrazně horšímu řešení, i když spíše díky vlastnostem Kodi, než Tvheadend. A mně pak chvíli trvalo, než jsem si to připustil a hlavně, než jsme se pustil do předělání této části řešení. Bouquets jsem používal kdysi, v začátcích používání Tvheadend pro příjem kanálů prvních OTT služeb. Pak jsem ale celý komplex řešení příjmu OTT postavil na známém konceptu tří scriptů: login - playlist - streamer, a bouquets přestal používat. Teď se ukázalo, že své místo stále má.

Toto řešení má pak ještě jednu zajímavou konsekvenci. A ta se může (ale nemusí) projevit v případech, kdy se Tvheaend používá jako zdroj TV kanálů v jiné aplikaci než Kodi. Tam je jakákoliv přímá vazba, kromě té základní zdrojové, tzn. playlist a xmltv, praticky nemožná. Samozřejmě záleží na tom jak a zda vůbec dokáže taková aplikace "vstřebat" časté změny ve zdrojové části poskytované Tvheadend, ale to je už věc jiná.

Závěr

Jak jsem již vícekrát uvedl, snažím se k projektu iVysílání vrátit a i kdybych to nakonec nedotáhl do konce, myslím, že to uvažování a závěry, které jsme tu popsal, mohou někomu, kdo by se chtěl tomuto nebo podobnému projektu věnovat, hodit. Ono takových případů, kdy existují kanály využívané jen někdy a které po většinu času nemají žádný obsah ani EPG, a je tedy na místě je v příslušném klientovi skrývat, je více. Oneplay Sport mutidimenze, Canal+ Sport 4 - 8, Niké Liga, ...
 
Citovat
  


Příspěvků v tématu
iVysílání - od JiRo - 18.1.2025, 14:59
RE: iVysílání - od JiRo - 18.1.2025, 18:40
RE: iVysílání - od waladir - 18.1.2025, 19:27
RE: iVysílání - od JiRo - 18.1.2025, 21:05
RE: iVysílání - od waladir - 18.1.2025, 21:07
RE: iVysílání - od JiRo - 19.1.2025, 13:03
RE: iVysílání - od JiRo - 19.1.2025, 14:37
RE: iVysílání - od waladir - 19.1.2025, 15:53
RE: iVysílání - od pbk - 19.1.2025, 15:55
RE: iVysílání - od JiRo - 19.1.2025, 16:20
RE: iVysílání - od martinchromy1985 - 20.1.2025, 14:02
RE: iVysílání - od JiRo - 20.1.2025, 16:04
RE: iVysílání - od JiRo - 20.1.2025, 23:43
RE: iVysílání - od JiRo - 21.1.2025, 9:26
RE: iVysílání - od JiRo - 21.1.2025, 15:21
RE: iVysílání - od JiRo - 22.1.2025, 0:35
RE: iVysílání - od JiRo - 23.1.2025, 10:47
RE: iVysílání - od JiRo - 23.1.2025, 12:02
RE: iVysílání - od jkmh - 23.1.2025, 14:45
RE: iVysílání - od JiRo - 23.1.2025, 22:36
RE: iVysílání - od JiRo - 24.1.2025, 22:25
RE: iVysílání - od jkmh - 24.1.2025, 23:12
RE: iVysílání - od JiRo - 25.1.2025, 6:04
RE: iVysílání - od jkmh - 25.1.2025, 10:32
RE: iVysílání - od JiRo - 25.1.2025, 19:45
RE: iVysílání - od lukas.v - 26.1.2025, 8:51
RE: iVysílání - od martinchromy1985 - 27.1.2025, 5:38
RE: iVysílání - od JiRo - 27.1.2025, 11:26
RE: iVysílání - od JiRo - 01.2.2025, 13:21
RE: iVysílání - od martinxp - 12.2.2025, 21:22
RE: iVysílání - od JiRo - 13.2.2025, 0:05
RE: iVysílání - od JiRo - 17.2.2025, 11:49
RE: iVysílání - od martinchromy1985 - 19.2.2025, 9:07
RE: iVysílání - od JiRo - 19.2.2025, 10:58
RE: iVysílání - od martinchromy1985 - 20.2.2025, 16:14
RE: iVysílání - od JiRo - 21.2.2025, 19:04
RE: iVysílání - od martinchromy1985 - 22.2.2025, 12:20
RE: iVysílání - od JiRo - 22.2.2025, 13:52
RE: iVysílání - od JiRo - 25.2.2025, 2:10
RE: iVysílání - od JiRo - 28.2.2025, 17:14
RE: iVysílání - od JiRo - 01.3.2025, 21:13
RE: iVysílání - od JiRo - 02.3.2025, 16:56
RE: iVysílání - od JiRo - 03.3.2025, 12:42
RE: iVysílání - od martinchromy1985 - 04.3.2025, 7:04
RE: iVysílání - od JiRo - 04.3.2025, 11:29
RE: iVysílání - od JiRo - 08.3.2025, 19:30
RE: iVysílání - od martinchromy1985 - 08.3.2025, 21:00
RE: iVysílání - od JiRo - 08.3.2025, 21:30
RE: iVysílání - od martinchromy1985 - 09.3.2025, 9:33
RE: iVysílání - od JiRo - 09.3.2025, 10:42
RE: iVysílání - od martinchromy1985 - 11.3.2025, 5:21
RE: iVysílání - od 100karel - 15.5.2025, 20:15
RE: iVysílání - od JiRo - 15.5.2025, 20:36
RE: iVysílání - od martinchromy1985 - 27.6.2025, 10:34
RE: iVysílání - od JiRo - 27.6.2025, 13:03
RE: iVysílání - od martinchromy1985 - 10.7.2025, 11:19
RE: iVysílání - od JiRo - 13.7.2025, 15:12
RE: iVysílání - od martinchromy1985 - 04.8.2025, 6:26
RE: iVysílání - od JiRo - 04.8.2025, 12:28
RE: iVysílání - od JiRo - 10.8.2025, 17:01
RE: iVysílání - od JiRo - 05.8.2025, 23:41
RE: iVysílání - od martinchromy1985 - 12.8.2025, 5:11
RE: iVysílání - od martinchromy1985 - 12.8.2025, 9:34
RE: iVysílání - od 100karel - 22.11.2025, 20:05
RE: iVysílání - od JiRo - 22.11.2025, 20:10
RE: iVysílání - od 100karel - 22.11.2025, 20:44
RE: iVysílání - od JiRo - 22.11.2025, 21:11
RE: iVysílání - od 100karel - 12.2.2026, 16:10
RE: iVysílání - od JiRo - 12.2.2026, 18:04
RE: iVysílání - od Marthinius - 12.2.2026, 23:41
RE: iVysílání - od JiRo - 13.8.2026, 10:35
RE: iVysílání - od JiRo - 13.8.2026, 12:14
RE: iVysílání - od JiRo - 13.8.2026, 19:04
RE: iVysílání - od JiRo - 15.8.2026, 19:33

Přejít na fórum:


Prochází: 1 host(ů)