• 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
PIP - obraz v obraze - doplněk
#1
Narazil jsme na téma PIP addon  při nepravidelném brouzdání po Kodi community forum, při kterém se dívám, co je kde v Kodi nového a co by mne mohlo inspirovat.

Funkce PIP mě už napadla několikrát (řešili jsme ji kdysi v Media Portal), stejně jako myšlenka, mít v přehledu kanálů Live TV náhledy aktuálního vysílání. Ne že bych po tom nějak extra toužil, spíše mě lákalo něco takového vymyslet i v Kodi. Vím, že tvůrci Tvheadend a Kodi o něčem takovém přemýšlí už delší dobu (či spíše v minulosti několikrát přemýšleli), ale jak se zdá, tak "nativní" realizace je ještě vzdálená.

Odkazované řešení je tak trochu "drbání se na levém uchu pravou rukou přes hlavu", ale myšlenka je to poměrně jednoduchá a elegantní. Autor mltobi je zjevně teprve v počátku řešení, ale podle zběžné analýzy kódu (alespoň co já dokáži posoudit) to vypadá velmi nadějně. A výše zmiňovaná myšlenka, náhledů aktuálního vysílání v přehledu Live TV kanálů, pak po analýze kódu doplňku nevypadá realizačně nijak složitě.
   

Určitě si najdu čas PIP addon vyzkoušet a pokud ho najdu (času) ještě více, rád bych se pustil do zmiňovaného náhledu kanálů. To bych viděl jako kombinaci využití kódu z PIP addon v novém "script" doplňku a souvisejícího doplněním skinu, například v novém typu zobrazení, které jsem popsal v tématu Estuary Easy. Je možné, že by přicházel v úvahu i živý náhled například i v EPG, ale to už je běh na delší trať. No, uvidíme...
   

Přidejte se ze svými zkušenostmi z pokusů a testování PIP addon.
 
Citovat
#2
Podobně je to řešené u skinu MQ9. PIP addon jsem však v systému nenašel ...

S905X 2/3 → CE 19 \ RPi4 → LE 19 \ HTPCLE 18 \ XOne S  18 \ NAS Synology 212JDSM 6.x \ Vero 4K+ → OSMC 19
 
Citovat
#3
Skusal som to a mne to nefunguje Ip servera aj port, meno, heslo zadane spravne. Po vyvolani napise "No URL fuond..." Not started... Neviem kde moze byt chyba.
 
Citovat
#4
Tak jak jsem slíbil, vyzkoušel jsem a upřímně řečeno, jsem z toho trochu rozpačitý. Funguje to, ale žádná hitparáda to není. Obraz není plynulý, ale stahují se vzorky podle nastavení. Nejkratší peridoa je 1 s. Takže víte, co se na programu PiP děje, ale to je vše. Otázka je, zda člověk potřebuje více.

Zdá se to ještě celé syrové, já to zatím zkoušel jen na virtuálce, postavil jsem si s LE jen pro toto testování, ale nějak jsem špatně nastavil velikost a výkon, tak možná tam bude zakopaný pes. Až budu mít více času, tak to prověřím na výkonějším stroji.

Jinak pár slov k funkci. Je to koncipované jako service, která si po spuštění z Tvheadend serveru stáhne kompletní playlist. To je vidět v logu:
Kód:
2021-08-16 19:11:19.400 T:813      INFO <general>: [pip-service] Starting
2021-08-16 19:11:19.431 T:813      INFO <general>: [pip-service] download m3u file with 498 lines from http://10.0.0.20:9981/playlist/channels.m3u?profile=matroska.
2021-08-16 19:11:19.433 T:813      INFO <general>: [pip-service] parsed 119 channels.
Matroska je nastaveno jako default, je možné zvolit i jiný profil, je ale třeba dbát na to, že to musí umět pobrat ffmeg, který musí být samozřejmě na stroji, kde běží Kodi, k diposzici. Předpokládá se verze 4.4. Autor předpokládá běh pouze na LE s Kodi 19, kde je tato verze k dispozici v repozitáři LibreELEC Add-ons. Druhým přepdokladem je Tvheadend verze 4.3.

Ovládání funkce je jednoduché a nijak zvlášť user friendly. Tady by se asi dala udělat ještě celá řada vylepšení. realizačně pro to autor používá kodi vnitřní funkci NotifyAll, což je neobvyklé a vlastně docela zajímavé řešení. Je třeba v definici mapování kláves namapovat potřebný příkaz, který funguje jako "toogle".
Kód:
<keymap>
    <global>
        <keyboard>
            <p mod="longpress">NotifyAll(service.pip, toggle_pip)</p>
        </keyboard>
    </global>
</keymap>
Screenshot přikládám:
   
a také ukázku, jak to vypadá v Tvheadend (řádek streamu, které končí v PiP okně má ID 7F):
   

Shrnutí:
  • funkce asi použitelná bude, ale jen pro přehled o tom, co se děje na jiném programu
  • určitě by se dalo vylepšit ovládání
  • samozřejmě zcela jiný level ovládání by to získalo, kdyby se doplnil script s vlastním skin designem - ale tím by se už ztratila univerzálnost, případně sjednocení vzhledu se všemi skiny
  • určitě by byla zajímavá myšlenka spojit to s novými funkcemi kodi 19 - upozorňování na začátek programu - což by ale bylo už o hodně složitější a je otázka, zda vůbec možné (spíše ne)
  • moje myšlenka, použít zdrojový kód tohoto addon jako inspiraci pro script - "živý" náhled v seznamu TV kanálů - není zas tak od věci. Určitě by to za průzkum stálo. Jen ten čas..

@bojler Dodržel jsi to, čím autor podmiňuje správnou funmkci? Tedy LE pro Kodi 19, ffmpeg 4.4 a hlavně Tvheadend 4.3?
 
Citovat
#5
Aha. Ja bezim na Coreelec 19.
 
Citovat
#6
To mi připomíná, že jsem k PC měl nějakou TV-R AV Hybrid kartu (přesný název už je v propadu dějin) a ta uměla kanály zobrazit v takzvané "mozaice" cca 3x5, 4x6 nebo tak. Obrázky statické a vždy po jednom se v intervalu několika sekund proměňovaly.
To jen jako OT.
 
Citovat
#7
@meda Jo přesně, tak k tomuhle bych ten v addon použitý princip a jeho kód chtěl využít. Ta mozaika, to by vlastně byl seznam kanálů TV o kterém jsem psal, ve kterém by byly ty pseudo živé náhledy.
 
Citovat
#8
Tak PIP je u MQ9 řešen spíše jako takový "pseudo" PIP. Máte tu pánové zcela jiné požadavky a já byl se svým příspěvkem těžce OT. Omluva za zaplevelení debaty ...  8
S905X 2/3 → CE 19 \ RPi4 → LE 19 \ HTPCLE 18 \ XOne S  18 \ NAS Synology 212JDSM 6.x \ Vero 4K+ → OSMC 19
 
Citovat
#9
@bojler Tak asi nejpodstatnější je ten Tvheadend 4.3., ale i ten by na CE měl být (pokud tedy používáš ten v CE). FFmpeg Tools je tam také, takže nic nebrání tomu to na CoreELEC provozovat také. Já se na to chystám, abych to měl k dispozici na hlavním Kodi a mohl to testovat v praxi. Tak až se k tomu dostanu, tak dám zprávu.
 
Citovat
#10
Tak konečně zprovozněno na CE 19.4 Matrix na Beelink GT-King, dedikovaný Tvheadend 4.3 na intel PC. ffmpeg používám z repozitáře CoreELEC Add-ons. S ffmpeg byl drobný problém, addon ho nedokázal spustit, takže jsem musel v kódu udělat malou rychlou změnu a zadat tam celou cestu k aplikaci. Teď to funguje přesně tak, jak autor @mltobi popisuje.
V ukázce sleduji v Kodi Live TV jeden kanál z OTT O2TV, druhý (ze stejné služby) je zobrazován v okně přes addon pip:
   
To samé pohledem stavu v Tvheadend:
   
Ovládání mám přes DO. Jinak to ani jednoduše nejde, addon lze díky díky unikátnímu používání built-in příkazu Kodi NotifyAll posílanému do běžící service nejlépe ovládat takto. Použil jsem longpress klávesy 0. Tato klávesa je, jak známo, v Kodi Live TV nativně používána k přepínání mezi dvěma posledně navolenými programy, takže v kombinaci s longpress použitým pro ovládání addon-u pip je to docela přirozené, až návykové.
 
Kód:
<zero mod="longpress">NotifyAll(service.pip,toggle_pip)</zero>

Měl jsem v plánu to ovládání nějak předělat, vylepšit ho. 1 Ale nakonec jsme zjistil, že v té jednoduchosti řešení, které autor zvolil, je přesně to, co člověk od takové funkce potřebuje. V kombinaci s dvojím využitím klávesy 0 na DO (normal a long-press) to prostě nemá chybu. Spíše se tedy nyní soustředím na to, použít prinip, na kterém je addon postavený, k funkci, o které tady psal @meda (viz dále).

Nyní teddy mírné OT k funkci pip, kterým bude funkce mozaiky s "live screenshoty". To co autor v addon pip vytvořil je docela dobrým základem k realizaci funkce, která sice není příliš užitečná (ve smyslu "dá se bez ní žít"), zato je ale velmi efektní. Její realizace je tedy spíše taková libůstka, nebo možná výzva, protože se v ní slučuje potřeba řešit několik problémů.

Live TV screenshot funkce, skinning, případně ukládání většího množství dat. Většinu kolem Live Tv screenshot už vyřešil @mltobi, se skiningem si poradím, zbývá (pokud k tomu řešení povede, protože tady je více možností) ona potřeba ukládání většího množství dat. Těmi daty myslím odložené screenshoty všech kanálů, které se navíc budou cyklicky přepisovat. No a pokud máte, jako já více než 150 kanálů, a chcete-li dospět k nějakému efektivnímu řešení, tzn. zajistit obnovu v nějakém rozumném čase, tedy každé cca 2-3 sekundy na kanál (víc Tvheadend nezvládne), je jasné, že datový tok bude pro ukládání na obvyklé médium (kartu) Android boxů neúměrný.

Kromě konkrétních pokusů (psaní kódu) tedy zatím probíhá analytická fáze řešení. V jejich průběhu jsme se už začal zabývat využitím RAM disku, ale tam zatím narážím (v případě *ELEC) na jisté problémy. Dá se ale předpokládat že tohle snad vyřeším později. V té souvislosti se mi otevřelo další téma, tedy úvaha nevytvářet a neukládat screenshoty jednotlivých kanálů na straně klienta, ale rovnou na serveru. Tedy stroje na kterém běží Tvheadend. V mém případě je to klasické PC, takže tam se bez RAM disku zatím objedu, SSD disk, na kterém to teď běží to množství zápisů vydrží rozhodně déle, jak ssd karta na android boxu. Kodi na klientech by pak využívaly odkazy na soubory screenshotů identifikované názvem kanálů. Takováto dekompozice řešení se zdá být perspektivnější. Na straně klienta by to v podstatě vedlo pouze na doplnění dalšího(-ch) pohledu(-ů) do PVR zobrazení kanálů. Podobně jsem tam kdysi už přidal zobrazení typu Zeď resp. Zeď extended, takže teď bych jen u všech typů zobrazení vyměnil loga za screenshoty, případně doplnil screenshoty tam, kde je na to místo, což by už byla v kontextu celého řešení jen drobnost.
   
 
Citovat
#11
Poslední zde zveřejněné pokusy jsem prováděl na dříve stažené starší verzi addon. Uniklo mi tedy, že již delší dobu existuje novější verze, aktuálně 1.1.0, která přináší další zajímavé funkce, včetně vyšší frekvence zobrazení a také použití /dev/shm. Tím pádem je na Linuxových systémech vyřešen problém vysoké frekvence zápisu dat na disk. Více na github addon.

Už včera, když jsem konečně addon zprovoznil se ukázala jeho užitečnost, teď v novější verzi, je to ještě o chlup lepší, byť je tam ještě pár drobných bugů. Ale to je to nejmenší a jistě to ve spolupráci s autorem půjde vyřešit.

Čím více je zájem addon používat, tím větší je zájem mít možnost ho propojit s funkcemi Kodi Live TV. Šanci mají, alespoň u uživatelů z mého okolí, jednoduché funkce a funkce, která přirozeně navazují na ty, co se už používají. Teď mi například přišel námět zařídit, aby se při přepnutí mezi dvěma naposledy sledovanými kanály (klávesa 0) přepnul analogicky i obsah v pip. To je ovšem výzva... 11
 
Citovat
#12
Odpovídám na dotaz v SZ, zda nelze zobrazení pip spouštět příkazem. Lze, a to tak, že se v příkazu zopakuje to, co je do addon posíláno přes funkci NotifyAll a je addon-em definováno v souboru mapování kláves.

U současné verze se ale musí respektovat to, že spuštění zobrazení je možné pouze v okamžiku, běží-li Live TV. V jiném případě addon skončí s chybou. To je oproti předchozí verzi trochu rozdíl (a podle mne krok zpět, a možná chyba, kterou si autor neuvědomil?), tam byla tato situace v addon podchycena a chybová hláška se objevila pouze jako Kodi Notifikace a addon běžel dál. Oprava ale nebude nijak složitá a chystám se to autorovi na Github navrhnout. Prozatím se to dá jednoduše vyřešit tím, že mapování kláves příkazy addon zasílaných přes funkci NotifyAll se nadefinuje pouze v sekci stránky <FullscreenLiveTV></FullscreenLiveTV>. Znamená to ale ruční zásah do mapování, případně i tak, že se předefinuje mapování, které vytváří addon. V tomto případě totiž nestačí toto mapování editovat, protože addon, po nějaké změně v jeho nastavení, vygeneruje soubor mapování znova.

A na závěr ještě jedna poznámka. Pravdou je, že mě autor ve svém označení "script.service" poněkud znejistil. Addon je totiž service, žádnou tradiční script část ve smyslu, že by se např. pro zobrazení pip spustil script, v něm nenajdete. Zobrazení a volba funkcí se provádí přímo v části trvale běžící service po přijetí zprávy obsahující požadavek na vykonání příslušné funkce. Jak už jsem výše napsal, je to netradiční řešení, pro tyto účely ale naprosto vyhovující, které má naopak řadu výhod. Jednou z nich je, že absence tradičního script-u s vlastním dynamicky vytvořeným modálním oknem nemá žádný vliv na ovládání funkcí Kodi tak, jak by to naopak u toho tradičního řešení bylo. Je to jednoduché a plně funkční.

A ještě dvě doplnění pro ty, co si to ještě neuvědomili. 
  1. Zátěž systému (zejména CPU) není u tohoto addon úplně nejnižší. Celkem pochopitelně - další komunikace s Tvheadend, ffmpeg, tmpfs/ramdisk, ... Je tedy třeba počítat s tím, že se u extrémně levného a jen těsně na základní potřeby Kodi dimenzovaného HW mohou objevit problémy (navýšení teploty CPU, zpomalení reakce, atp.). Tady se ukazuje, jak jsou některé debaty na téma "Jaký HW mi stačí na provozování Kodi?" občas "jalové". Ano, v okamžiku, když si někdo ke Kodi čuchne a chce jen jednu, dvě nejčastější funkce/addons, jsou ty rady typu (stačí ti...) možná účinné, ale stačí když se nováček potká s dalšími addons, řekne si "To chci!" a je svými 1 MB RAM a levným procesorem na hranici možností. Myslete na to...
  2. U tohoto addon je vidět jasná preference Linux based (a tedy i *ELEC) systémů. Jeho poslední verze tu preferenci (s využíváním tmpfs) potvrzuje. U Windows to problém patrně také nebude, i když bude třeba více zapojit systémové znalosti a zkušenosti. Jak je to s Androidem a iOS netuším, tyto systémy jsou (co se týče Kodi) mimo mou kompetenci. U Android TV (provozovaných na HW TV přijímačů) bych pak už s něčím takovým vůbec nepočítal, tím spíše, čím je pro tuto kategorii systémů pip v Kodi asi zbytečné.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)