YT Live v Tvheadend - Verze k tisku +- XBMC-Kodi.cz (https://www.xbmc-kodi.cz) +-- Fórum: KODI - Doplňky (https://www.xbmc-kodi.cz/forum-kodi-doplnky) +--- Fórum: Live TV & PVR (https://www.xbmc-kodi.cz/forum-live-tv-pvr) +---- Fórum: Tvheadend (https://www.xbmc-kodi.cz/forum-tvheadend) +---- Téma: YT Live v Tvheadend (/prispevek-yt-live-v-tvheadend) Stran:
1
2
|
YT Live v Tvheadend - Client - 04.8.2019 Po několika pokusech a testech jsme připravil jednoduché řešení, které dostane Live 24/7 vysílání z Youtube do Tvheadend. Vyšel jsme z mého obecného řešení, které je popsané zde a připravil sadu scriptů, které těm, kdo mají alespoň základní znalosti v jejich používání a také samozřejmě rozumí problematice příjmu IPTV/OTT v Tvheadend, pomohou. Neočekávejte řešení "out of box", ale pro průměrně zkušeného laika, který umí pracovat s Tvheadend, by neměl být problém si po pár minutách, či desítkách minut, vysílání z Youtube pustit na jakémkoliv funkčním klientovi Tvheadend. Tedy i v Kodi, v části Live TV & PVR.
Toto řešení je s ohledem na obecné řešení (viz odkaz výše) typu onthefly, doplněné použitím cache.
Východiska a stručný popis řešení
Řešení je postavené na použití aplikace youtube-dl, která nedělá nic jiného, než že pro zadanou Youtube adresu v obvyklém tvaru, např. pro populární NASA Live: Official Stream of NASA TV je to adresa https://www.youtube.com/watch?v=21X5lGlDOfg, vytvoří standardní adresu streamu, kterou je možné použít například v libovolném přehrávači jako je VLC, a tím pádem tedy i v Tvheadend. Nejde přitom o žádnou pirátskou aplikaci. Gooogle toto řešení podporuje, ovšem pouze při splnění jistých podmínek. Jednou z nich, a pro toto řešení klíčovou, že vytvořená adresa streamu má omezenou časovou platnost (konkrétně jsou to nyní 4 hodiny). Vidět je to na příkladu takto vytvořené adresy streamu po výše uvené vysílání NASA TV.
Kód: https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1565455688/ei/56BOXbeVO9PV7gOG1Z_YDg/ip/xx.xx.xx.xx/id/21X5lGlDOfg.1/itag/300/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D298/hls_chunk_host/r5---sn-2gb7sn7r.googlevideo.com/playlist_type/DVR/initcwndbps/11940/mm/44/mn/sn-2gb7sn7r/ms/lva/mv/m/mvi/4/pl/20/dover/11/keepalive/yes/mt/1565433975/disable_polymer/true/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,playlist_type/sig/ALgxI2wwRQIgSK136jHuGlJwMVnde4o8GfIxmZ-EaMtigwvzbPgjxcsCIQDLXhms3D0Pv-TpTUwa3iIGogYl0_Jltf946KbJpcAmMw%3D%3D/lsparams/hls_chunk_host,initcwndbps,mm,mn,ms,mv,mvi,pl/lsig/AHylml4wRAIgAK5tK3FGKBrB6b-KGDNGvs_9IGznJiFFeU8rmZrx6f8CIB48RIQdDJWmlHkfx32znEhBoApkYiriSwohKJBexY6O/playlist/index.m3u8 Jak je vidět už obsahu, je adresa streamu adresou manifestu HLS. V adrese můžeme vidět část .../expire/1565455688/..., která obsahuje časový údaj udávající čas, do kterého je tato adresa platná, a tedy i stream na který odkazuje dostupný.
Aplikace youtube-dl
Ne všechny Linux systémy mají aplikace youtube-dl instalovanou defaultně (spíš ne, než ano). A některé systémy, na kterých běží Kodi (LibreELEC, OpenELEC, ...) ani tuto aplikace instalovat nemohou. Ale není v tom žádný problém, stačí se řídit pokyny v https://ytdl-org.github.io/youtube-dl/download.html. V případě, nebudete-li aplikaci instalovat ale stahovat, musíte si vybrat adresář, do kterého ji umístíte a absolutní cestu k tomuto adresáři si poznamenat. Budete ji ještě potřebovat.
Playlist
Řešení je opřené o existenci playlistu, ve kterém jsou definované kanály a související parametry (název služby, název kanálu, atd.) tak, jak je chceme vidět v Tvheadend, a také o to, že playlist obsahuje relaci definovaných kanálů k Live TV vysílání v Youtube. Takový řádek playlistu může vypadat například takto:
Kód: #EXTINF:-1,NASA TV Jde o klasickou formu playlistu pro Tvheadend, ve kterém je použita metoda pipe:// tedy volání aplikace/scriptu, který pak do Tvheadend vrací vlastní data streamu. Playlist se v tomto případě vytváří samozřejmě ručně a každý si do něj může vložit to, co ho z nabídky Live TV Youtube zajímá, stejně jako si každý může řádky uvozené #EXTINF doplnit dalšími parametry podle toho, jakým způsobem Tvheadend využívá a provozuje. Co je s ohledem na popisované řešení nejdůležitější, to je obsah řádků uvozených pipe://, které obsahují (vysvětluji pro jeden kanál v playlistu, tedy NASA TV):
*) Uvedl jsem zde adresář, který používám já. Může tu být samozřejmě uveden jakýkoliv adresář, který si pro umístění dat a scriptů tohoto řešení vyberete (bude se o tom psát později). Jen musíte pamatovat na to, že cesta k adresáři musí být v playlistu zadaná vždy jako absolutní!
Je bezpodmínečně nutné zachovat standardní tvar playlistu! To znamená, 1. řádek #EXTM3U a pak každý sudý řádek #EXTINF... a každý lichý řádek pipe://... Možná, že si Tvheadend poradí i s méně standardním zápisem playlistu, ale script refresh.sh, který playlist čte, ne.
Streamer
Streamer ve finále obsahuje volání ffmpeg, kterému předá adresu streamu. Tu získává dvěma způsoby:
Při první způsobu se z názvu služby sestaví adresa cache souboru který, existuje-li, obsahuje odloženou adresu streamu. Pokud neexistuje nebo pokud odložená adresa streamu již není platná, pokračuje se druhým způsobem a při něm sestaví youtube adresu a převede ji na adresu streamu. Současně adresu streamu uloží do cache.
Jistou komplikací je to, že převod youtube adresa na adresu streamu trvá poměrně dlouho (řádově několik vteřin). Dojde-li k přepnutí kanálu po ukončení platnosti jeho adresy streamu, bude prodleva přepnutí o dobu převodu prodloužena. Proto je řešení ještě doplněno o funkci refresh, která asynchronně, v předepsané periodě (4 hodiny, což je právě doba platnosti adresy streamu), obnoví v cache všechny adresy streamu.
Refresh
Script, který provádí jednorázovou obnovu adres streamů. Čte playlist a podle něj aktualizuje obsah souborů cache. Předpokládá se, že tento script bude spouštěn při každém startu systému a pak každé 4 hodiny. Tímto způsobem bude zajištěno, že adresa streamu bude vždy platná a nebude tedy třeba, aby byla její obnova prováděna ve scriptu streamer.sh. Spouštění refresh.sh scriptu si musí každý zařídit sám a využít k tomu funkce svého systému (cron, systemd, ...).
Známé chyby a problémy aneb co ještě není 100% a ToDo
Postup instalace:
Celé řešení jsou vlastně pouze dva soubory, streamer.sh a referesh.sh, které si můžete stáhnout níže jako zip soubor. Třetí soubor, playlist.m3u8, si musíte ručně vytvořit sami, případně můžete použít (po jeho editaci) vzor z následujícího postu.
Aktuální verze ke stažení:
[attachment=5497]
RE: YT Live kanál v Tvheadend - Client - 04.8.2019 V tomto příspěvku byste měli nalézt aktualizovaný playlist, obsahující všechna dosud známá 24/7 Live TV Youtube vysílání. Předpokládám, že jeho obsah bude postupně narůstat. Mně osobně zajímají zejména zahraniční zpravodajské stanice, kterých je většina a pak pár dalších kanálů, NASA, příroda (livecam ze záchranných stanic zvířat a ptáků, pohled do čapího hnízda). Další jsou už určené spíše jen pro testování 'relaxační pásma, live citycam, atp.). Většinou se jedná o FHD nebo HD přenosy, 30 a 60 FPS.
Ozval se už také první přispěvatel @petulko11 a přidal zajímavé kanály zahraničních zpravodajství. Kanály Shuffle Dance od @ericek74. Nevím, jestli to dál evidovat, uvidím jak to bude přibývat a zda to má smysl. Konec konců si to každý nakonec může najít v jednotlivých příspěvcích v tématu. Takže zatím díky za vaše příspěvky. Já jsme přidal další kanály NASA, ty se ale dost překrývají, často jeden pořad běží postupně i na dalších kanálech.
Nezapomeňte, že v níže uvedeném playlistu je uvedena symbolická cesta /<path>/ k adresáři, ve které je umístěný soubor streamer.sh. Pokud si budete chtít obsah playlistu okopírovat, musíte před jeho použitím tuto adresu editovat tak, aby odpovídala vašemu umístění, tedy místo /<path>/ vložit vaši skutečnou absolutní cestu, například tedy /storage/.kodi/media/playlist/youtube.live/. Tohle je s libovolným textovým editorem hračka.
Je také samozřejmě možné doplnit sudé řádky playlistu (začínající #EXTINF) známými parametry, které umožní do Tvheadend přenést další údaje. V tomto případě se tedy s playlistem pracuje jako s jakýmkoliv jiným, které se používají v Tvheadend.
playlist.m3u8 Kód: #EXTM3U RE: YT Live kanál v Tvheadend - Client - 05.8.2019 První veřejná verze řešení YT Live TV v Tvheadend je k dispozici v 1. příspěvku. RE: YT Live kanál v Tvheadend - Client - 11.8.2019 Výše jsem uvedl, že pro periodické spuštění scriptu refresh.sh doporučuji cron nebo systemd. S cronem je to jednoduché, jeho použit je triviální a notoricky známé. Ale jak jsem zjistil, jsou s ním potíže v distrech jako je LibreELEC nebo OpenELEC. Já používám LibreELEC a je to v podstatě sázka do loterie. Některé aplikace zadané v crontab se mi spustí tak jak potřebuji, jiné ne. Už si s tím hraji delší dobu a protože nejsem zkušený uživatel Linux, čerpám hlavně z informací na internetu. V jednom článku jsem se dočetl (bohužel jsme si neodložil odkaz na něj a v historii ho nemohu najít), že pokud je v nějakém Linux systému systemd, že se nedoporučuje cron používat. Že s tím "mohou být jenom problémy". Má někdo podobné zkušenosti a může případně poradit? Jinak, abych obešel používání nevyzpytatelného cron v LibreELEC, začal jsem pro periodické spouštění skriptů používat systemd. Nechtělo se mi to celé studovat a tak jsem šel cestou nejmenšího odporu a spuštění definuji pomocí aplikace systemd-run, kterou s patřičnými parametry spouštím při startu LibreELEC. Příkazy pro spuštění systemd-run s parametry --on-active a --on-calendar jsem tedy umístil do autostart.sh. Je po problémech a vše funguje jak potřebuji. RE: YT Live kanál v Tvheadend - petulko11 - 16.8.2019 zaujimave riešenie... klobúk dole včera som sa s tým kus zabával ... podľa tvojho návodu som to rozbehal v pohode... (ubuntu 18.04) U mňa to dosť dlho trvá kým kanál nabehne po prvom prepnutí na daný kanál..... Opakované prepnutia sú už okej A druhý problém je že mi TV Headent odmieta naskenovať všetky kanály z playlistu.... Mám v ňom 20 kanálov - po prvom skenovaní našiel 4 a po opakovaných asi 20 skenovaniach ich mám primapovaných 9. Nezaznamenal si tento problém? Pripájam ďalšie live tv.... Kód: #EXTINF:-1,Россия 24 RE: YT Live kanál v Tvheadend - Client - 16.8.2019 @petulko11 No, to jsem rád, že jsem to nedělal nadarmo, že to taky někdo další bude používat. To neoskenování bude patrně důsledek toho, že před skenováním ještě nejsou do cache načtené ty adresy streamů, takže se při každém skenování kanálu pouští youtube-dl a než Tvheadend dostane adresu, tak to spadne na timeout při skenování. Ale nejsem si jistý, asi bych musel vidět log Tvheadend. Asi by ale stačilo si před prvním skenováním ručně pustit refresh.sh, ten tam ty adresy načte a pak už by to scanování mělo frčet rychleji. Měl bych to dát do popisu. Pak tam, asi ani nebude ta prodleva při prvním přepnutí. Kdyby ani to nepomohlo, tak pak omezit počet současně přehrávaných streamů v nastavení sítě. Jinak ideální je, pokud tím periodickým spouštěním refresh.sh scriptu budeš udržovat trvale platnost adres streamů. Pak by nikdy k tomu, že se ta adresa bude generovat při přepnutí kanálu, nikdy nemělo dojít. Za ten playlist díky. Uložím ty kanály ho do příslušného postu, aby to bylo na jednom místě. RE: YT Live kanál v Tvheadend - Client - 16.8.2019 Na základě zkušeností @petulka11 jsme v 1. příspěvku doplnil popisy instalace a také doplnil playlist o další kanály i další stručné informace. RE: YT Live kanál v Tvheadend - ericek74 - 16.8.2019 @Client dobre si to vymyslel.dcerunka ma radost,ze uz nemusi prepinat na yt a vyhledavat a ma to v seznamu tv, ted nam tady skace po byte #EXTINF:-1,Danceshuffle2 pipe:///<path>/streamer.sh Danceshuffle2 FWCCwU35fb8&feature=youtu.be #EXTINF:-1,Danceshuffle pipe:///<path>/streamer.sh Danceshuffle UX1cdPqW5M8&feature=youtu.be dik RE: YT Live kanál v Tvheadend - Client - 18.8.2019 @ericek74 Poslal jsem známému nový YT playlist, kam jsem přihodil i tvé dva kanály. A druhý den mi volá. "Taky jsi mě mohl upozornit! Přijdu večer z práce, dům se třese, manželka v kuchyní mokrej hadr na hlavě a vyčítavý pohled v očích, v obýváku jak po uragánu, naše dvě holky před televizí, tam přes Kodi puštěný Danceshuffle, volume na max a duc, duc duc... Jo a ještě na mě v tom kraválu řvou, že teď budou chodit tancovat sem, na tý 4K TV a přes velký repro to je docela jinej zážitek než u nich v pokoji. Tak díky!" RE: YT Live v Tvheadend - Client - 20.8.2019 Víceméně sporadicky pokračuji v dalším vylepšování a úpravách. Včera jsem si, kromě jiného, vyzkoušel jistou modifikaci fungování. U Automatic network, do které zadávám adresu playlistu, jsem si vypnul Skip startup scan: a naopak zapnul Vyhledávání muxů při nečinnosti: a mohl tak zrušit spouštění refresh.sh po startu a v periodách 4 hodiny. Funguje to dobře, pokud se tedy smíříte s tím, že se prakticky neustále scanují kanály. Vzhledem k tomu, že scanování probíhá na velmi nízké prioritě, tak je to celkem snesitelné. Pokud by tedy někomu vadila nutnost spouštění scriptu refresh.sh, může použít tento způsob fungování. RE: YT Live v Tvheadend - petulko11 - 21.8.2019 mne to zatial funguje s refresh.sh tak ako má... Zadal som si do crontabu spustenie 60s po štarte a potom každé 4h... Aj spomínané problémy v mojom prvom príspevku spustením refresh.sh boli odstránené.... RE: YT Live v Tvheadend - otava5 - 01.4.2020 Mohu se zeptat je zde nějaký posun k permanentnímu streamu do tvh nebo stále platí refresh 4h??? Když bude stream puštěn v kuse třeba 5h pojede dál nebo po 4h konec? RE: YT Live v Tvheadend - Client - 01.4.2020 @otava5 No, nikdy jsem se na žádný pořad nedíval déle jak 4 hodiny, ale řekl bych, že tak jak jsem to celé pochopil, tak omezená platnost platí jen do zahájení přehrávání, tedy že musíš zahájit přehrávání do nejpozději 4 hodin od vygenerování adresy steramu. Ale jistě to potvrzené nemám. Možná bys to našel u dokumentace youtube-dl. RE: YT Live v Tvheadend - otava5 - 01.4.2020 Chystám se toto zprovoznit zítra, u Coreelec stačí ten script youtube-dl co je v repu? RE: YT Live v Tvheadend - otava5 - 02.4.2020 Nakonec jsem stáhnul soubor "youtube-dl" a již funguji Ale musím stream probudit v ssh a pak už to jede v tvh. Jak je řešen výběr kvality? Dal jsem si stream 4K ale jede je 1080p/30? (https://www.youtube.com/watch?v=M0j1cMEd94Q). RE: YT Live v Tvheadend - Client - 02.4.2020 @otava5 Je to popsáno výše, addon script pro Kodi k tomu použít nelze. To bys to celé musel řešit v rámci Kodi. Ale jak vidět, tak sis už poradil. Kvalita se řeší tím převodem pomocí youtube-dl, taky o tom výše píši. Mělo by se to nastavit v jeho parametrech, ale já jsem se tím už nijak nezabýval. Možná by v tom pomohlo podívat se, jak to řeší addon YT v Kodi, i když tam to jde přes inputstream.adaptive, takže to je stejně asi k ničemu. Pár odkazů k tématu kvality, když budeš chtít laborovat: https://github.com/ytdl-org/youtube-dl https://github.com/ytdl-org/youtube-dl/issues/15593 https://askubuntu.com/questions/486297/how-to-select-video-quality-from-youtube-dl https://stackoverflow.com/questions/31631535/youtube-dl-dash-video-and-audio-in-highest-quality-without-human-intervention RE: YT Live v Tvheadend - otava5 - 05.4.2020 @Saros: uměl bys tyto dva scripty převést do php? Byl bych vděčen RE: YT Live v Tvheadend - gnor - 29.7.2020 Prosím nemáte někdo 2 scripty z 1 příspěvku Clienta, odkaz zmizel. Děkuji RE: YT Live v Tvheadend - JiRo - 29.7.2020 @gnor No jo, @Client byl po svém opuštění fóra vymazán, nevidím ho ani v seznamu uživatelů. Možná, že to u u příloh k jeho příspěvkům bylo podobné. Ale je také možné, že to smazal sám. Každopádně se něco podobného stalo i u mých příspěvků, a protože on měl v jistou dobu přístup k mému účtu, je ta druhá možnost také pravděpodobná. Jinak k YT Live mohu napsat varování. Ono to sice funguje, ale díky tomu, že se obnova adres streamů musí provádět periodicky, vznikne problém s tím, že YT nakonec zablokuje přístup z důvodu vyčerpání jednoho z limitů... Moc jsem po tom nepátral a YT v Tvheadend jsem raději kvůli tomu přestal používat. Asi by to chtělo vyzkoumat, v čem je vlastně porblém, ale já na to teď nemám ani čas, ani chuť. RE: YT Live v Tvheadend - meda - 29.7.2020 @JiRo: Ale kdež, proč hned panika. Uživatel @Client: je stále členem fóra, jen příspěvky, které byly v tématech bbarona a doplňku sosáč byly zneviditelněny. Pokud něco smazal sám, pak díky vlastnímu názoru nezveřejňovat některé vědomosti. https://www.xbmc-kodi.cz/search.php?action=results&sid=a2cf75559d448293f4d8d58aeba1f777 |