DVB-T po IP pomocí TVheadend

tvheadend - GUIV komerčních nabídkách poskytovatelů internetového připojení můžeme nalézt i možnost sledovat televizní nebo rozhlasové stanice přes IP. V takovém případě není nutné vlastnit televizní přijímač, přičemž konkrétní multimediální obsah „naladíme“ na našem notebooku nebo chytrém telefonu. Podobný zdroj DVB-T programů si ale můžeme v domácím prostředí zpřístupnit z naší televizní antény. K tomu nám slouží několik softwarových nástrojů, které jsou spuštěny na jednoduchém počítači umístěném v půdním prostoru našeho obytného domu.
Kromě sledování televizního a rádiového obsahu můžeme využívat i plánované nahrávání s možností pozdějšího přehrání.
Obsahem tohoto článku je jednoduché nastavení nástroje TVheadend a jeho využití jak pro přímé sledování, tak i zmíněné nahrávání pořadů.

Prvotním předpokladem zůstává kvalitní příjem vysokofrekvenčního televizního signálu DVB-T vlastní anténou. Pro jeho zpracování použijeme jakýkoli USB DVB-T adaptér s podporou linuxu a jednodeskový počítač – např. Raspberry Pi. Místo počítače lze s úspěchem využít i WiFi router s instalovanou distribucí OpenWRT. O výkon tohoto zařízení se prakticky nemusíme zajímat, protože nástroj TVheadend neprovádí žádné přepočítávání přijímaného toku dat. Zjednodušeně, z přijatého signálu vybere příslušnou část, kterou ve stejné podobě přepošle klientskému zařízení, na kterém je spuštěno webové rozhraní nebo nainstalován kompatibilní software.

O tom, jak jsem testoval takové systém i s praktickými ukázkami se lze dočíst v článku Přenos DVB-T kanálů po IP.

Máme zde ale jedno omezení, a tím je, že pokud používáme pouze jeden USB DVB-T adaptér, lze sledovat pouze jeden digitální multiplex. Přesněji, několik uživatelů může sledovat jakýkoli program v rámci jednoho přijímaného multiplexu, a to včetně probíhajícího nahrávání. Pokud bude chtít některý z uživatelů sledovat televizní program, který je vysílán v rámci jiného multiplexu, nebude mu vyhověno. Důvodem je, že DVB-T přijímač může být naladěn pouze na jeden přijímaný kmitočet – multiplex. Existují samozřejmě přijímače, které obsahují např. dva přijímače, ty se však v systému tváří odděleně. Můžeme si ale pomoci připojením druhého, třetího nebo ntého USB DVB-T adaptéru.

Instalace TVheadend

Jak je již zmíněno výše, nástroj TVheadend lze spustit pod operačním systémem GNU/Linux, kde se chová jako standardní služba. Instalace je závislá na konkrétní distribuci a její průběh lze nalézt na internetu.

V případě Arch Linux je nástroj umístěn v repositáři AUR. Pokud se rozhodneme využít zařízení s OpenWRT, můžeme si potřebný software přeložit ze zdrojových kódů sami nebo stáhnout distribuční verzi.

Následné spuštění TVheadend je také závislé na konkrétní distribuci.

Při instalaci bývá v operačním systému vytvořeno uživatelské konto hts pod kterým je služba spouštěna. Toto konto je součástí skupiny video. Veškeré konfigurační soubory a databáze (seznam multiplexů, služeb, kanálů a nahraných pořadů) jsou ukládány v textovém formátu do adresáře ~hts/.hts/. Není tedy problém s jejich následným čtením a případně úpravou.

Nastavení TVheadend

Konkrétní postup instalace a spuštění TVheadend závisí na našem operačním systému. V případě nastavení je tato operace víceméně podobná. Změny jsou pouze mezi jednotlivými verzemi TVheadend. Následující popis se bude týkat stabilní verze 4.0, nicméně podobně můžeme postupovat i v případě nestabilní a testovací 4.1. Verzi 4.1 nalezneme v repositáři GIT.

Po spuštění nyní už služby TVheadend zadáme do internetového prohlížeče URL skládající se z IP adresy zařízení, kde běží TVheadend, a HTTP portu 9981, kupříkladu http://10.11.1.254:9981.

Pokud je služba správně spuštěna, zobrazí se modrá obrazovka s oknem Electronic Program Guide.

Kontrola USB DVB-T adaptéru

Chceme-li předejít zdlouhavému hledání problémům s DVB-T adaptérem v systému, podíváme se, zda je tento v systému přítomen a načteny příslušné ovladače.

Opět je důležité zmínit, že DVB-T adaptér musí být podporován jádrem naší distribuce.

Výpis USB zařízení připojených k zařízení:

případně:

Na výpisech je patrný USB DVB-T adaptér PCTV Systems nanoStick T2 290e. Na dalších obrázcích bude ale zobrazen Realtek Semiconductor Corp. RTL2838 DVB-T. To proto, že jsou výpisy a obrázky pořizovány z různých systémů.

Výpis připojených, rozpoznaných a dostupných adaptérů:

Bohužel nejsme schopni rozlišit o který adaptér se jedná. Pokud nás to zajímá, máme k dispozici výpis jaderného cyklického bufferu – logu:

Orientace v logu však vyžaduje znalosti jak linuxu (jádra), tak hardwarové výbavy USB DVB-T adaptéru. Nás zajímají konkrétně řádky obsahující jak identifikaci zařízení PCTV Systems PCTV 290e/Sony CXD2820R, tak označení v /dev/dvb/adapter 0 frontend 0.

Sony CXD2820R je čip, který je využíván adaptérem PCTV Systems PCTV 290e.

Zajímá-li nás, zda adaptér přijímá nějaký DVB-T signál, nainstalujeme a spustíme nástroj w_scan. Viz Přenos DVB-T kanálů po IP.

Nastavení USB DVB-T adaptéru v TVheadend

Pokud je adaptér v systému správně detekován, pokročíme k jeho nastavení v TVheadend.

Nastavení se provádí v krocích:

  1. Vytvoření sítě,
  2. případné vytvoření multiplexů – automatické/ruční,
  3. přiřazení vytvořené sítě zařízení,
  4. vyhledání služeb (služby jsou kanály, které však ještě takto nejsou označeny),
  5. namapování vyhledaných služeb na kanály.

V záložce Configuration > DVB Inputs > TV Adapters vidíme seznam adaptérů, které jsou připojeny k zařízení. V tuto chvíli nemusíme adaptér povolovat ani vybírat příslušnou síť. Tento krok je pouze informativní.

Síť si ale vytvoříme na další záložce Networks.tvheadend - Add network

Klikneme na tlačítko Add a vybereme typ DVB-T network. Jméno sítě můžeme zvolit dle našeho uvážení. Tento název se bude později nastavovat v seznamu adaptérů. Pre-defined muxes nastavíme na Czech Republic: cz-All. V tom případě se pro prohledávání zvolí veškeré multiplexy dostupné v České Republice. Pokud budeme chtít zadávat přijímané multiplexy ručně, nemusíme vybírat žádnou volbu.

Network Discovery slouží pro automatické přidávání dalších přijímaných multiplexů v závislosti na jejich oznamování sítí DVB-T (jedná se o vlastnost DVB-T). Opět, pokud budeme multiplexy zadávat ručně, pravděpodobně volbu nezatrhneme. O jejich seznam se ale budeme muset v budoucnu starat ručně.

Idle scan muxes určuje, zda mají být definované multiplexy během nečinnosti TVheadend (doba kdy nebudeme televizi sledovat nebo nebude probíhat plánované nahrávání) prohledávány za účelem nalezení nových kanálů.

Jestliže máme k zařízení připojeno více USB DVB-T adaptérů, doporučuji definovat multiplexy pro tyto adaptéry ručně. Pro každý adaptér vytvořit vlastní síť a nezávislou skupinu multiplexů. Tím omezíme riziko, kdy dva uživatelé sledující programy ze stejného multiplexu zaberou dva fyzické adaptéry.
V záložce Muxes se nachází seznam multiplexů, se kterými bude TVheadend pracovat. V případě, že jsme při vytváření sítě nastavili volbu Pre-defined muxes, je zde automaticky vytvořeno množství multiplexů dostupných v konkrétní zemi.tvheadend - Muxes
V opačném případě musíme příslušné multiplexy vytvořit ručně. K tomuto účelu můžeme použít výstup z již zmíněného nástroje w_scan – potřebujeme konkrétní kmitočty dostupných multiplexů.

Nyní opět k záložce TV Adapters.
tvheadend - TV adapters
V tomto kroku povolíme (Enable) příslušný USB DVB-T adaptér a vybereme konkrétní síť. Doporučuji vybrat volby Initial ScanIdle Scan.

Potvrzením tlačítkem Save začne TVheadend zpracovávat nastavení.

Po kliknutí na malou dvojitou šipku v okně vpravo dole je zobrazen log služby. Je zde patrné skenování jednotlivých multiplexů. V záložce Muxes můžeme tento průběh sledovat ve sloupci Scan Result.

Služby a kanály

Vyhledávání služeb je zdlouhavou záležitostí a může trvat několik desítek minut. Určitě se nesnažíme tuto operaci uspěchat.

Na dalším obrázku vidíme seznam nalezených služeb. Pokud vidíme několik služeb se stejným názvem, je to správně, protože jsou dostupné z několika multiplexů. Nyní potřebujeme služby namapovat na příslušné kanály. Pouze kanály jsou zobrazeny při sledování TV. K tomu slouží tlačítko Map All/Map services. Na zobrazeném dialogu je vhodné zatrhnout volbu Check availability.
tvheadend - Map services

Na dalším obrázku jsou služby namapovány na kanály. Duplicitní kanály jsou záměrně vynechány.
tvheadend - Mapped services

Na záložce Configuration > Channel/EPG můžeme vidět nově vytvořené kanály. Ty však nejsou setříděny. Setřídění provedeme tlačítkem Assign number na konkrétním kanálu. Provedením této operace na dalším kanálu je přiřazeno další číslo v pořadí.
tvheadend - Services

Pokud máme nainstalovaný např. přehrávač VLC, můžeme zkusit některé z kanálů přehrát.
tvheadend - Play

A nyní zpět k naší první záložce, Electronic Program Guide, na které je k jednotlivým kanálům přiřazen název právě probíhajícího programu a jeho stav.
tvheadend - EPG

I zde je možné sledovat přenášený multimediální obsah.
tvheadend - Stream

Při práci služby TVheadend může být zajímavé sledovat datový tok mezi zařízením a USB DVB-T adaptérem, případně sílu signálu. Tyto informace nalezneme na záložce Status.
tvheadend - Stream

Nahrávání pořadů

Funkce nahrávání pořadů je vítanou výhodou služby TVheadend. Při jejím používání musíme pečlivě zvážit, zda naše zařízení/počítač, disponuje dostatečně velkým diskovým prostorem. Pokud používáme WiFi router, bude nutné připojit externí úložný disk. Velikost jednoho pořadu může dosahovat až několik GB prostoru.

Je nutné brát v úvahu, že v době nahrávání je DVB-T adaptér vyhrazen tomuto procesu a nelze využít možnost sledování jiného kanálu z jiného multiplexu. Toto omezení je stejné jako sledování TV více uživateli najednou.

Nahrávání pořadů lze ovládat z grafického rozhraní TVheadend nebo z klientské aplikace (např. Kodi).

Následující text se věnuje nastavení nahrávání na diskový prostor mimo běžné umístění TVheadend. To je vhodné zejména v případě, že chceme nahrané pořady sdílet po síti, např. přes SMB (Windows) nebo NFS (UNIX/linux). Pokud tuto možnost nepoužijeme, nebudeme se dále nahrávání věnovat. V opačném případě musíme mít znalosti práce s operačním systémem GNU/Linux.

Mé externí datové úložiště je připojeno do systému v adresáři /data/. Pro ukládání pořadů, a jejich sdílení, je vytvořen adresář /data/share/public/Videa/DVR. Mód této složky nastavíme na 777, tedy přístup pro čtení i zápis všem uživatelům zařízení.

TVheadend budeme nastavovat v záložce Configuration > Recording > Digital Video Recording Profiles.

Recording system path nastavíme na naši cestu /data/share/public/Videa/DVR. Aby byl multimediální obsah dostupný všem, nastavíme File permissions na hodnotu 0666Directory permissions na 0777. Protože budou nahrané pořady sdíleny i pro operační systém Windows, zatrhneme volbu Use Windows-compatible filenames.tvheadend - DVR profile

Sdílení pro Windows a Unix

Nastavení sdílení je podobné jako v článku Instalace Syncthing v Arch Linux a globální sdílení složek.

Následující příklad uvádí nastavení sdíleného adresáře /data/share/public, který je vlastněn uživatelem d-share. Příslušná část souboru /etc/samba/smb.conf:

Podobným způsobem jako v případě SMB můžeme sdílet soubory přes NFS. Důležité je si v tomto případě uvědomit, že nelze zadat jméno uživatele d-share, ale musíme zadat jeho číslo (UID) a číslo skupiny (GID).

Nyní vytvoříme/změníme soubor /etc/exports.d/nfs.exports a vložíme definici sdíleného adresáře:

Po restartu služeb SMB – samba a NFS bude adresář dostupný ze sítě.

V případě, že bude obsah sdíleného adresáře měněn uživateli, tzn. např. vymazání souborů po síti, dojde k nekonzistenci mezi adresářovou strukturou a databází služby TVheadend. Ničeho se ale nemusíme obávat, protože námi ručně přidané soubory nebudou v TVheadend vidět a vymazané se přesunou ze záložky Digital Video Recorder > Finished Recordings do Digital Video Recorder > Failed Recordings. Pokud tedy možno, s nahrávkami pracujeme pouze přes rozhraní TVheadend.

Timeshift

„Přeskakování“ v čase během právě přehrávaného pořadu je možné aktivovat v záložce Configuration > Timeshift. Tak jako v případě nahrávání pořadů i funkce timeshift je v režii zařízení, kde je služba spuštěna. Nikoli tedy na zařízení, na kterém je program uživatelem zobrazován. Zařízení proto musí disponovat příslušným výkonem, velikostí paměti RAM a případně diskovým prostorem.tvheadend - Timeshift

Nastavení přístupů

V některých situacích je vhodné omezit přístup ke službě TVheadend. Každý uživatel může mít vlastní profil s nastavením různých vlastností. To vše nalezneme na záložce Configuration > Access Entries (Tvheadend verze 4.0) nebo Configuration > Users >Access Entries (Tvheadend verze 4.1).tvheadend - Access entries

Avahi/zeroconf

TVheadend automaticky informuje službu Avahi o svém běhu. Avahi slouží k notifikaci okolních zařízení v síti o službách dostupných z konkrétního zařízení. Pokud používáme program, který umí tyto notifikace zpracovávat, je jimi řízen. Nemusíme se tedy starat o jejich nastavování. Takovým programem je např. multimediální centrum Kodi.

Sledování pořadů

Aktuálně vysílané pořady nebo jejich záznamy můžeme sledovat v samotném webovém rozhraní TVheadend nebo kompatibilními programy. Mezi ty patří zejména VLC a Kodi. Právě Kodi umožňuje bezproblémový přístup k šířenému multimediálnímu obsahu. Nejprve je však nutné ve Windows a v linuxu nainstalovat příslušný zásuvný modul. V OS Android je v Kodi přítomen v základní instalaci.

Datový tok

Při sledování pořadů se nemusíme bát že by datový tok dosahoval nepředstavitelných hodnot. U kvality DVB-T SD (mpeg2) i DVB-T2 FullHD (HEVC – h.265) dosahuje přibližně 2,5 – 4,2 Mbps. Hodnoty se pohybují v závislosti na aktuální kompresi videa.

Další možnosti příjmu TVheadend

TVheadend není určen k pouze příjmu standardu DVB-T/DVB-T2, ale i dalších včetně satelitních DVB-S/DVB-S2. Jejich nastavení probíhá podobným způsobem, nicméně mé praktické zkušenosti pokrývají pouze DVB-T/DVB-T2.

Závěr

Nastavení a provoz služby TVheadend umožňuje bezproblémový příjem a distribuci digitální televize a rozhlasu normy DVB-T. Je vhodným doplňkem domácí WiFi infrastruktury neomezující se pouze na použití klasických televizních přijímačů.

Stále je ale nutné mít na paměti, že sledování televizních pořadů a rozhlasu je podmíněno platbou koncesionářských poplatků. A to i v případě TVheadend.

Související

Radiové obvody a jejich vlastnosti – rozhraní
Přenos DVB-T kanálů po IP
Jednoduchý střih a konverze pořadu nahraného z DVB-T v GNU/Linux

6 komentářů u „DVB-T po IP pomocí TVheadend

  1. Pingback: Přidání IP kamery do TVheadend | brichacek.net

  2. Pingback: Arch Linux on Orange Pi Zero | brichacek.net

  3. DP

    Dobrý den,
    návod je perfektní, tvheadend na Debianu používám už dlouho, ale v openwrt se mi rozchodit nepovedl. Dokonce jsem nenašel ani žádný kloudny návod. Můžete popsat i instalaci na openwrt. Diky.

    1. Zdeněk Břicháček Autor příspěvku

      Tvheadend používám pouze v Archlinux. V OpenWRT jsem jej nikdy nezkoušel, ale asi by neměl být větší problém aplikaci rozchodit. OpenWRT ale používám pouze na HW WRAP, který nemá USB, takže mě ani tato možnost nikdy nezajímala. WRAPy používám pouze jako WiFi brány.

  4. Pingback: TVheadend – Kodi s DVB-T2 tunerem – ElvisEK | Linux, Apple, Websites, Security

  5. Pingback: Aktivní anténní 4-cestný rozbočovač pro DVB-T/DVB-T2/CATV/DAB s ADA4304-4 a USB hubem TUSB4041I | brichacek.net

Leave a Reply