02.4.2024, 10:20
(Tento příspěvek byl naposledy změněn: 29.7.2024, 7:42 uživatelem JiRo.
Důvod úpravy: Překlepy, doplnění informace.
)
Streamlink je aplikace, který umožňuje převod různých typů video streamů z různých typů zdrojů do jednotného tvaru, který je pak možné použít jako zdroj pro Tvheadend. V této roli se tak používá stejným způsobem jako např. ffmpeg, tzn. pomocí konstrukce pipe://.
Aby nedošlo k mýlce, neznamená to, že by Streamlink mohl ffmpeg plně nahradit. Pokud je třeba při převodu stream remuxovat, streamlink pro to volá právě ffmpeg. Proto také ve volání streamlink existují parametry, které použítí ffmpeg v režii streamlink, včetně například cesty k aplikaci ffmpeg, definují. To zda steramlink ffmpeg zavolá, si určuje sám, na základě parametrů, s kterými je spuštěn.
Všechny zásadní informace o aplikaci Streamlink je možné získat v streamlink.github.io. Z těch klíčových vybírám postup instalace a parametry spuštění (příkazové řádky).
Kdy použít Streamlink?
Osobně používám Streamlink v případě, kdy v Tvheadend potřebuji přijímat streamy ve formátu MPEG-DASH. Je pravda, že bych pro to mohl použít i samotné ffmpeg, v takovém případě ale musí jít o verzi, která bylo přeložena s knihovnou lib2xml. V mé aplikaci, kdy Tvheadend běží v systému CoreELEC, jsem s tím ale měl dlouhodobé problémy. Přehrávané streamy se v Kodi přehrávaly nespolehlivě, s velkým množstvím krátkodobých výpadků, při kterých obsah bufferu přehrávače klesal až k 0 %. Teprve, když jsem, na základě příspěvku od @tomx: použil Streamlink, se situace výrazně zlepšila. Nyní mi pro zpracování streamů MPEG-DASH v Tvheadend stačí běžný ffmpeg, který je součástí CoreELEC (a který není přeložený s knihovnou lib2xml), protože vlastní parsování manifestu provádí (a zjevně efektivněji) právě Streamlink. Příjem a zpracování probíhá relativně bez problémů, obsazení bufferu přehrávače v Kodi dosahuje výrazně vyšších hodnot a případné krátkodobé výpadky v plynulém přehrávání zmizely buď úplně nebo jsou až o dva řády méně časté.
Jak Streamlink instalovat? (obecný návod)
Na popis instalace v obvyklých systémech odkazuji výše. Co se týče použití streamlink v *ELEC systémech, je ale situace složitější. V tomto příspěvku se o ní zmíním jen obecně, detailní návod očekávejte případně později.
Jak Streamlink instalovat? (návod pro *ELEC systémy)
Chcete-li instalovat Streamlink do *ELEC systému, musíte si být vědomi toho, že nejde o zcela standardní proces! Je tedy třeba mít větší než pouze základní znalosti a je také třeba si uvědomit, že instalace aplikace tohoto typu jde tak trochu proti duchu *ELEC instalací. O co jde?
*ELEC instalace je optimalizovaná distribuce Linux, ze které její autoři vypustili vše zbytné s cílem, aby instalace byla co možná nejmenší, nejjednodušší a zatěžovala HW co nejméně. Z toho důvodu z instalce vypustili většinu toho, co běžný uživatel *ELEC sytému, resp. Kodi v něm, nepotřebuje. Mezi jinými i nástroje, které umožní do systému instalovat další aplikace. *ELEC systém tak možnost instalace dalších má jen ve dvou základních případech. První je instalace vybraných aplikací prostřednictvím mechanismu addons Kodi, (takto se například do *ELEC dostane i aplikace ffmpeg), druhou možností je instalace utility entware, která pak instalaci dalších aplikací zprostředkuje. Chceme-li tedy do *ELEC nějaké další aplikace instalovat, musíme použít zvláštní postup. Zkušenější uživatelé budou vědět jak na to, případně si postup vyhledají, těm méně zkušeným to zatím samostatně nedoporučuji. To je také důvod k tomu, že jsem podrobný návod na instalaci zatím neuvedl. Nejsem si totiž jistý, jestli tím někomu, kdo sám něco takového nedokáže, nezkomplikuji život...
Jak vypadá typické použití Streamlink v Tvheadend?
V tomto případě hodně záleží na celkové koncepci řešení příjmu OTT služby v Tvheadend. Ze známých důvodů se takové návody dnes už příliš nezvěřejňují, proto použití Streamlink pouze naznačím.
Obvyklý způsob, s použitím ffmpeg, má v závěrečné fázi, kdy jsou v playlistu na místě adresy streamu použita volání scriptu, např. tuto formu:
V použitých proměnných se pak očekává:
ffmpeg - cesta k aplikaci ffmpeg
url - adresa zdrojového steramu
Pokud chceme totéž provést s použitím Streamlink, nahradíme výše uvedenou konstrukci následovně:
Sama aplikace Streamlink se tedy spouští příkazem /storage/.opt/bin/streamlink, který v sobě obsahuje cestu k adresáři /storage/.opt/bin/, do kterého byla aplikace v CoreELEC instalována pomocí entware.
Aby nedošlo k mýlce, neznamená to, že by Streamlink mohl ffmpeg plně nahradit. Pokud je třeba při převodu stream remuxovat, streamlink pro to volá právě ffmpeg. Proto také ve volání streamlink existují parametry, které použítí ffmpeg v režii streamlink, včetně například cesty k aplikaci ffmpeg, definují. To zda steramlink ffmpeg zavolá, si určuje sám, na základě parametrů, s kterými je spuštěn.
Všechny zásadní informace o aplikaci Streamlink je možné získat v streamlink.github.io. Z těch klíčových vybírám postup instalace a parametry spuštění (příkazové řádky).
Kdy použít Streamlink?
Osobně používám Streamlink v případě, kdy v Tvheadend potřebuji přijímat streamy ve formátu MPEG-DASH. Je pravda, že bych pro to mohl použít i samotné ffmpeg, v takovém případě ale musí jít o verzi, která bylo přeložena s knihovnou lib2xml. V mé aplikaci, kdy Tvheadend běží v systému CoreELEC, jsem s tím ale měl dlouhodobé problémy. Přehrávané streamy se v Kodi přehrávaly nespolehlivě, s velkým množstvím krátkodobých výpadků, při kterých obsah bufferu přehrávače klesal až k 0 %. Teprve, když jsem, na základě příspěvku od @tomx: použil Streamlink, se situace výrazně zlepšila. Nyní mi pro zpracování streamů MPEG-DASH v Tvheadend stačí běžný ffmpeg, který je součástí CoreELEC (a který není přeložený s knihovnou lib2xml), protože vlastní parsování manifestu provádí (a zjevně efektivněji) právě Streamlink. Příjem a zpracování probíhá relativně bez problémů, obsazení bufferu přehrávače v Kodi dosahuje výrazně vyšších hodnot a případné krátkodobé výpadky v plynulém přehrávání zmizely buď úplně nebo jsou až o dva řády méně časté.
Jak Streamlink instalovat? (obecný návod)
Na popis instalace v obvyklých systémech odkazuji výše. Co se týče použití streamlink v *ELEC systémech, je ale situace složitější. V tomto příspěvku se o ní zmíním jen obecně, detailní návod očekávejte případně později.
Jak Streamlink instalovat? (návod pro *ELEC systémy)
Chcete-li instalovat Streamlink do *ELEC systému, musíte si být vědomi toho, že nejde o zcela standardní proces! Je tedy třeba mít větší než pouze základní znalosti a je také třeba si uvědomit, že instalace aplikace tohoto typu jde tak trochu proti duchu *ELEC instalací. O co jde?
*ELEC instalace je optimalizovaná distribuce Linux, ze které její autoři vypustili vše zbytné s cílem, aby instalace byla co možná nejmenší, nejjednodušší a zatěžovala HW co nejméně. Z toho důvodu z instalce vypustili většinu toho, co běžný uživatel *ELEC sytému, resp. Kodi v něm, nepotřebuje. Mezi jinými i nástroje, které umožní do systému instalovat další aplikace. *ELEC systém tak možnost instalace dalších má jen ve dvou základních případech. První je instalace vybraných aplikací prostřednictvím mechanismu addons Kodi, (takto se například do *ELEC dostane i aplikace ffmpeg), druhou možností je instalace utility entware, která pak instalaci dalších aplikací zprostředkuje. Chceme-li tedy do *ELEC nějaké další aplikace instalovat, musíme použít zvláštní postup. Zkušenější uživatelé budou vědět jak na to, případně si postup vyhledají, těm méně zkušeným to zatím samostatně nedoporučuji. To je také důvod k tomu, že jsem podrobný návod na instalaci zatím neuvedl. Nejsem si totiž jistý, jestli tím někomu, kdo sám něco takového nedokáže, nezkomplikuji život...
Jak vypadá typické použití Streamlink v Tvheadend?
V tomto případě hodně záleží na celkové koncepci řešení příjmu OTT služby v Tvheadend. Ze známých důvodů se takové návody dnes už příliš nezvěřejňují, proto použití Streamlink pouze naznačím.
Obvyklý způsob, s použitím ffmpeg, má v závěrečné fázi, kdy jsou v playlistu na místě adresy streamu použita volání scriptu, např. tuto formu:
Kód:
${ffmpeg}ffmpeg -fflags +genpts -i ${url} -vcodec copy -acodec copy -f mpegts -mpegts_service_type digital_tv pipe:1
ffmpeg - cesta k aplikaci ffmpeg
url - adresa zdrojového steramu
Pokud chceme totéž provést s použitím Streamlink, nahradíme výše uvedenou konstrukci následovně:
Kód:
/storage/.opt/bin/streamlink --locale cs_CZ dash://${url} best --stdout --ffmpeg-ffmpeg "${ffmpeg}ffmpeg" --ffmpeg-fout "mpegts"