Portál AbcLinuxu, 25. dubna 2024 21:18

VDR, aneb domácí IPTV

28. 6. 2011 | Luboš Doležel
Články - VDR, aneb domácí IPTV  

V tomto článku vám ukáži, jak se snadno můžete dívat na televizi a poslouchat rádio po domácí síti, a to s minimem práce díky VDR.

Obsah

Smyslem tentokrát není dělat broadcast/multicast vysílání po síti pro mnoho možných připojených klientů. Předvedu vám, jak se dá nastavit server, který bude schopen přes unicast streamovat televizní a rádiové stanice a zároveň se postará o nahrávání vašich oblíbených pořadů. Počet klientů je omezen tím, kolik z nich se chce dívat na stanice v různých multiplexech (resp. na různých transpondérech), přesněji zda máte dostatek tunerů pro příjem tolika multiplexů současně. Tím neříkám, že VDR nelze používat k vysílání multicastu, jen to nebude náplní článku.

VDR je známé spíše jako aplikace z kategorie MythTV a XMBC, tedy něco, co si dáte na nějaký drobný počítač (HTPC), který následně připojíte k televizi a ovládáte dálkovým ovladačem. VDR ale může stejně dobře sloužit na serveru, odkud si může data brát jiné VDR (třeba už právě někde u televize), ale také váš notebook nebo mobilní telefon.

Instalace VDR

link

Prvním krokem je instalace balíčku vdr. Na Debianu to znamená aptitude install vdr, na Gentoo zase emerge vdr, znáte to. Vývojáři VDR vám samozřejmě doporučí instalovat stabilní verzi (nyní 1.6.x), ale ta nepodporuje DVB-S2, přes které se šíří většina vysílání v HD. DVB-S2 mi funguje až ve VDR 1.7.x. Na Gentoo to má snadné řešení:

layman -a vdr-testing
emerge vdr

Na jiných distribucích může být nutné si VDR stáhnout a zkompilovat ručně. Při ruční kompilaci bude pak nezbytné u pluginů upravovat cesty v Makefile, na kterých se má nacházet zdrojový kód VDR, proti kterému se plugin kompiluje.

Jakmile máme VDR nainstalované, tak rovnou nainstalujeme potřebné pluginy. Pro server se jedná zejména o pluginy live a streamdev-server. Pokud máte rádi britské vysílání, nainstalujte i plugin eepg pro plnou podporu jejich nestandardního EPG (elektronického programového průvodce). A pokud chcete přijímat i šifrované vysílání – ať už máte zakoupenu přístupovou kartu nebo máte pirátskou pásku přes oko – tak také plugin sc.

Na Gentoo je nutné pluginy povolit pomocí eselect vdr-plugin. Pokud si init skript děláte sami, tak stačí vědět, že se pluginy povolují pomocí -Pnázev_pluginu.

Nyní naladíme stanice. K tomu pro DVB-S používám program scan, resp. dvbscan. Pro DVB-S2 pak používám scan-sc2 – ten sice oficiálně funguje i pro DVB-S, ale mé zkušenosti jsou takové, že s mou kartou to takto funguje jen někdy. dvbscan funguje sice i pro DVB-T, ale pokud se chcete vyhnout naprosto zbytečným útrapám, používejte raději w_scan.

Skenovací tabulky v /usr/share/dvb jsou typicky dosti zastaralé. U satelitu to až tak nevadí, a to díky tomu, že se tam obvykle alespoň jeden transpondér chytí a díky Network Information Table jsou rychle odhaleny i ostatní transpondéry. U DVB-T, které nemá pásmo nabušené vysílači, je jistější právě w_scan, který proskenuje celé pásmo UHF a najde vám tedy úplně všechno.

Zatímco w_scan vypisuje informace o stanicích vždy ve formátu VDR, u jiných nástrojů může být třeba přidat přepínač -o vdr. Ve výsledku tedy budete mít něco jako toto (u DVB-T bude ta hromada znaků vypadat trochu jinak):

CT 24;CS Link:12525:v:S23.5E:27500:165=2:100=cze@4:52:0:8006:3:3014:0
CT HD;CS Link:11973:v:S23.5E:27500:2010=27:2020=cze@4,2023=qaa@4;2021=cze@106:0:D0F,624,D70,D03,D96,666:14070:3:3214:0
CT 1;CS Link:12525:v:S23.5E:27500:162=2:88=cze@4,89=cze@4,91=qaa@4;90=cze@106:40:D0F,D03,D70,D96,624,666:8003:3:3014:0
CT 2;CS Link:12525:v:S23.5E:27500:163=2:92=cze@4,93=cze@4,96=qaa@4:43:D0F,D03,D70,D96,624,666:8004:3:3014:0
Nova HD;Skylink:11895:v:S23.5E:27500:4011=27:4021=cze@3;4091=cze@106:0:D70,D03,D0F,624,D96:5071:3:3210:0
Nova;Skylink:11895:v:S23.5E:27500:4013=2:4023=cze@4:4123:D70,D03,624,D96:5073:3:3210:0
...

Tyto řádky patří do souboru /etc/vdr/channels.conf. Konfigurační adresář může být také někde jinde, například v /var/lib/vdr – závisí to na tom, jak je vaše instalace VDR nakonfigurovaná. Hezkou věcí je to, že stanice můžete v tomto souboru shlukovat do skupin. Skupinu zahájíte řádkem začínajícím dvojtečkou:

:Moje oblibene programy
CT 24;CS Link:12525:v:S23.5E:27500:165=2:100=cze@4:52:0:8006:3:3014:0
...

Pokud vám něco říká název DiSEqC (týká se DVB-S, pokud např. přijímáte vysílání z více družicových pozic), pak jeho nastavení patří do /etc/vdr/diseqc.conf. Namísto válčení s formátem tohoto souboru vřele doporučuji použít bashový program DiSEqC Setup, který soubor vygeneruje za vás. Pokud používáte DVB-T, DiSEqC se vás netýká.

Obecně jsem nic dalšího nastavovat nemusel. Pokud používáte DVB-S, doporučuji však v /etc/vdr/setup.conf nastavit

UpdateChannels = 2

jinak bude VDR zaplňovat seznam stanic všemi novými stanicemi, které se mu podaří najít. Na satelitu to znamená zaplnění tunou stanic s nabídkami erotických služeb po telefonu. UpdateChannels ale nedoporučuji nastavovat na 0. Pak hrozí, že kvůli změnám na vysílači nebudou vůbec fungovat některé stanice nebo jen selže nahrávání (to se pak těžko hledá příčina).

vdr-streamdev-server

link

streamdev-server se stará o streamování stanic přes síť. První věcí je nastavit povolené síťové rozsahy v souboru /etc/vdr/plugins/streamdev-server/streamdevhosts.conf:

127.0.0.1
10.10.10.0/24

Pokud vás láká pouštět stream i do Internetu, je vhodné na příkazové řádce pluginu nastavit uživatelské jméno/heslo pro autorizaci. Příkaz pro spuštění vdr by tak mohl vypadat takto:

vdr -Plive "-Pstreamdev-server -a uzivatel:heslo" ...

streamdev umí streamovat video v různých formátech (Transport Stream, Program Stream, Elementary Stream), což může být nevyhovující, pokud opravdu chcete stream pouštět do Internetu a máte malý upload. Na to tento plugin také myslí. Umožňuje totiž stream protáhnout přes libovolný skript (formát „Extern“), který může provádět rekompresi. Takový skript nastavíte pomocí přepínače -r na příkazové řádce pluginu a může vypadat například následovně:

#!/bin/sh

echo 'Content-Type: video/x-matroska'
echo

ffmpeg -threads 2 -i - -deinterlace -vcodec libx264 -vpre superfast -b 1050k -maxrate 1150k \
-s vga -acodec libfaac -ac 2 -ar 44100 -aq 160 -sn -y -f matroska pipe:

streamdev-server má své webové rozhraní typicky na portu 3000. Je jednoduché, ale funkční. Pro mě osobně je nejdůležitější asi odkaz Playlist, pod kterým se skrývá M3U playlist se všemi stanicemi. Díky tomu můžete ve svém přehrávači (například VLC) pomocí okna s playlistem mezi stanicemi přepínat a nemusíte se do webového rozhraní už nikdy vracet. I streamování probíhá přes HTTP, takže pak můžete nahrávat stanice dokonce i wgetem…

VDR, aneb domácí IPTV

Pokud by vám nefungovala rádia, ale televize ano, upravte zdrojový kód streamdev-serveru a nahraďte všechny výskyty audio/mpeg za snad cokoliv jiného, třeba video/mpeg. Dokonce i text/plain mi na rozdíl od audio/mpeg fungoval. Může za to pravděpodobně některá z posledních aktualizací na mém notebooku, dříve jsem nic upravovat nemusel.

VDR, aneb domácí IPTV

Přes streamdev-server se do vašeho přehrávače dostanou všechny obrazové a zvukové stopy, dále pak stopa teletextu (kde mohou na stránce 888 být skryté titulky) a stopa DVB titulků (kvalitnější než ty teletextové). Ve streamu je sice i proud s EPG, ale VLC jej ve streamu zjevně neočekává, takže jej nezpracovává. Ono by to ostatně ani nebylo moc praktické.

vdr-live

link

VDR Live je webová aplikace, která vám nabízí přehledného průvodce EPG, umožňuje přehrávání živého vysílání přímo v prohlížeči a rovněž odsud můžete nechávat vybrané programy nahrávat. Přehrávání v prohlížeči osobně nepoužívám – mplayerplug-in je porouchaný zmetek a VLC plugin (o který to standardně usiluje) od určitého inteligentního commitu ignoruje veškeré nastavení VLC a sám o sobě nastavitelný není, takže například neodstraní prokládání obrazu. Pokud máte VDR spuštěné jako klienta, můžete přes něj i na dálku přepínat stanice na své televizi.

VDR, aneb domácí IPTV

Pokud kliknete na červenou ikonku nahrávání, vyskočí na vás formulář s předvyplněnými informacemi o časovaném nahrávání. Pokud už je program v nahrávacím plánu, ikonka je zelená. Pokud používáte VDR Live, doporučuji nastavit v init skriptu VDR locale na anglické/americké. Nehledal jsem příčinu problému, ale bez toho se vám nebude ukazovat AM/PM, což je při 12hodinnovém formátu zobrazování docela matoucí.

export LC_ALL=en_US.UTF-8

Na dalším screenshotu můžete vidět zobrazení programu jedné stanice. VDR si data z EPG ukládá, takže i po restartu démona budete mít k dispozici EPG, typicky až na 7 dnů dopředu. Následuje přehled naplánovaného nahrávání a přehled již zhotovených nahrávek. U nahrávek je vidět čas pořízení a délka záznamu, rovněž je možné nahrávku přehrát. Data nahrávek se obvykle ukládají do /var/lib/vdr/video. Pozor, bitrate televizního vysílání bývá vyšší než bitrate různých .avi stažených z Internetu – ujistěte se, že máte na disku dostatek volného místa. Jen pro informaci, nemusíte se bát, že se nějaké nahrávání neuskuteční, protože jste se zrovna na něco dívali – nahrávání má vyšší prioritu.

VDR, aneb domácí IPTV VDR, aneb domácí IPTV VDR, aneb domácí IPTV

vdr-sc a vdr-eepg

link

Nastavení vdr-sc je už nad rámec tohoto článku. Konfigurace je ale v zásadě shodná s nastavováním sasc-ng, čemuž už zde byl věnován jeden článek. Je to způsobeno tím, že sasc-ng je postaven nad kódem vdr-sc. I když může sasc-ng vypadat jako „lepší řešení“ (emuluje DVB zařízení, kde jsou už všechny stanice dekódované), věřte, že vdr-sc je lepší a hlavně o dost spolehlivější.

Jak jsem psal už v úvodu, vdr-eepg je nutný pro „britské stanice“ (ale nejen ty, týká se to také například Sky IT). Britskými stanicemi mám na mysli stanice vysílané na družicové pozici 28,2° E. Bez tohoto pluginu by se vám v EPG zobrazoval jen aktuální, případně hned následující pořad. Na VDR je hezké, že pokud se nedíváte na žádnou stanici, využívá volný čas ke skenování stanic. Díky tomu pak máte k dispozici EPG i u stanic z multiplexů, na které jste se v poslední době nedívali.

Kam dál

vdr-streamdev-server podporuje i multicast streamování, ale to se opravdu hodí jen v situaci, kdy máte velké množství potenciálních klientů – více najdete v README tohoto pluginu. Protipólem je vdr-streamdev-client – ten ve VDR funguje jako virtuální zařízení DVB, které je přes TCP napojené na server. Hodit se vám může i plugin epgsync určený pro synchronizaci EPG mezi instancemi VDR, a to přes protokol SVDRP. Mezi klientem a serverem lze „přeposílat“ i naplánované nahrávání – i na to už existuje plugin. Přeji vám hodně zábavy!

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.