28.10.2025, 18:56
(Tento příspěvek byl naposledy změněn: 30.10.2025, 13:13 uživatelem JiRo.
Důvod úpravy: Překlepy
)
Dost často do Tvheadend vkládám různě získané streamy. A abych měl jejich příjem konzistentní s ostatním příjmem z DVB-T, C, T2 nebo OTT služeb, vyrobil jsm si jednoduchý postup, jak takové steramy do Tvheadend dostávat a relativně jednouše a rychle to celé udržovat a doplňovat. Není to sice úplně out-of-box a vyžaduje to jisté znalosti o používání a nastavení Tvheadend, ale tak to u této aplikace prostě je. Možná to bude i ostatní zajímat.
Základem řešení jsou celkem 4 soubory, umístěné v jednom adresáři:
Soubor playlist.m3u8
Fragment začátku souboru pro jeden kanál vypadá takto:
S významem:
Jeden typický řádek vypadá takto:
S významem:
To Do
Zip soubor, který obsahuje soubory config.ini a streamer.sh je přiložen k tomuto příspěvku.
Základem řešení jsou celkem 4 soubory, umístěné v jednom adresáři:
- playlist.m3u8 - který slouží k základní definici kanálů a jejich paramaterů a popojení s odpovídající službou
- streams.ini - soubor (název souboru se může měnit parametrem v config.ini), který pro každou službu obsahuje:
- identifikaci služby
- url steramu
- sadu parametrů, které ovlivňují další zpracování
- protocol - určuje typ protokolu, kterým je stream přenášený, možné jsou dva typy: HLS nebo DASH, default je HLS
- referer - v případě, že daný server požaduje, aby v hlavičce requestu byl refrer uvedený, je ho zde možné zadat, default je prázdný řetězec
- broadcast - určuje, zda jde o stream s videm a audiem nebo jen audiem, možné jsou tedy dvě hodnoty: TV nebo RADIO, default je TV
- provider - řetězec, který se přenese do položky provider (ffmpeg) a následně se např. zobrazí i v Kodi, v položce posytovatel. Jako default se použije název domény 2. řádu a tld z url streamu oddělené tečkou
- service - řetězec, který se přenese do položky service (ffmpeg) a následně se např. zobrazí i v Kodi, v položce služba. Jako default se použije parametr, který propojuje kanál z playlist.m3u8 a položku ze sterams.ini (viz dále)
- protocol - určuje typ protokolu, kterým je stream přenášený, možné jsou dva typy: HLS nebo DASH, default je HLS
- identifikaci služby
- config.ini - definice některých společných parametrů, ve verzi 1.1 doplněna i možnost zadání defalt parametrů:
- protocol - default hodnota se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou. Pozor, script akceptuje pouze zadání parametru "HLS" nebo "DASH". Pokud na tomto místě bude jakýkoliv jiný řetezec, použije se vždy "HLS"
- referer - default hodnota se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou. Script nijak obsah nekontroluje, proto zadávejte řetězec referer obezřetně.
- broadcast - default hodnota se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou. Pozor, script akceptuje pouze zadání parametru "TV" nebo "RADIO". Pokud na tomto místě bude jakýkoliv jiný řetezec, použije se vždy "TV"
- provider - zpracování tohoto parametru je o něco složitější. Postupuje se hierarchicky:
- default hodnota, pokud je jiná než prázdný řetezec, tedy provider="" nebo provider= se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou.
- pokud bude default hodnota prázdný řetezec nebo nebude vůbec v config.ini uvedená a
- pokud u konkrétního streamu bude parametr s konkrétní hodnotou, použije se tato konkrétní hodnota
- pokud u konkrétního streamu nebude použit parametr s konkrétní hodnotou, použije se řetězec sestávající se z domény druhé úrovně a tld, oddělené tečkou streamu.
- pokud u konkrétního streamu bude parametr s konkrétní hodnotou, použije se tato konkrétní hodnota
- default hodnota, pokud je jiná než prázdný řetezec, tedy provider="" nebo provider= se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou.
- protocol - default hodnota se použije, pokud u konkrétního streamu není zadán tento parametr s konkrétní hodnotou. Pozor, script akceptuje pouze zadání parametru "HLS" nebo "DASH". Pokud na tomto místě bude jakýkoliv jiný řetezec, použije se vždy "HLS"
- streamer.sh - script, který je v tvheadend volán metodou pipe://. Script musí být nastavený jako spustitelný! Obsahuje vlastní zpracování parametrů, na základě kterých je spuštěno přehrávání obsahu daného kanálu.
Soubor playlist.m3u8
Fragment začátku souboru pro jeden kanál vypadá takto:
Kód:
#EXTM3U
#EXTINF:-1 tvh-epg="0" group-title="Generic|Slovensko",JOJ
pipe:///home/kodi/TVServer/playlist/generic/streamer.sh jojS významem:
- 1. řádek, #EXTINF:, obsahuje standardní parametry jednoho kanálu
- 2. řádek, kromě pipe://, obsahuje defincii cesty /home/kodi/TVServer/playlist/generic/, název spustitelného scriptu streamer.sh a parametr identifikující stream tohoto kanálu, joj.
Jeden typický řádek vypadá takto:
Kód:
joj=https://xyz.abc.sk/xxxxxxxxxxxxxxxxxxxx,referer=https://xxx.yyy.skS významem:
- joj - identifikace, pomocí které jsou parametry streamu propojeny s příslušným kanálem v playlist.m3u8
- https://xyz.abc.sk/xxxxxxxxxxxxxxxxxxxx - adresa streamu
- referer=https://xxx.yyy.sk - parametr referer
Kód:
joj=https://xyz.abc.sk/xxxxxxxxxxxxxxxxxxxx,protocol=HLS,referer=https://xxx.yyy.sk,broadcast=TV,provider=ABC,service=Progam1To Do
- Ještě přemýšlím o tom, doplnit do streams.ini parametry pro výběr audio stopy, případně stopy titulků.
Zip soubor, který obsahuje soubory config.ini a streamer.sh je přiložen k tomuto příspěvku.
