2.7. Plugins

Der VDR selbst konzentriert sich auf die Kernfunktionen DVB-Empfang, das Aufzeichnen von Sendungen und eine rudimentäre EPG-Verwaltung. Zusätzliche Funktionen werden über Plugins realisiert. Eine gute Übersicht welche Plugins existieren und ob sie mit den unter yaVDR verwendeten VDR-Versionen kompatibel sind, bietet die Seite Plugins im VDR-Wiki. Die meisten kompatiblen Plugins sind in den yaVDR-Paketquellen zu finden und können bei Bedarf einfach über das Webfrontend oder die Shell nachinstalliert werden.

2.7.1. Streamdev-Plugin

Das Streamdev Plugin erlaubt es dem VDR Live-TV an andere VDRs (über das Streamdev-Client Plugin) oder beliebige Clients via HTTP zu streamen. Es teilt sich in Streamdev-Server und Streamdev-Client auf.

Streamdev-Server

Das Streamdev-Server Plugin (Paketname vdr-plugin-streamdev-server) ist bei yaVDR 0.6 vorinstalliert. Es erweitert den VDR um die Fähigkeit Live-TV übers Netzwerk zu streamen.

[Anmerkung]Zugriff von anderen Rechnern aus

In der Voreinstellung nach der Installation erlaubt das Plugin nur Zugriffe vom gleichen Rechner. Um anderen Clients den Zugriff (und die Steuerung wichtiger Funktionen per SVDRP) zu erlauben müssen wie im folgenden beschrieben zwei Konfigurationsdateien angepasst werden

Für den Zugriff über SVDRP (z.B. wenn ein anderer VDR mit Streamdev-Client Plugin zugreifen können soll) muss die Datei /etc/vdr/svdrphosts.conf wie unter SVDRP beschrieben angepasst werden.

Für den Zugriff auf die von Streamdev-Server bereitgestellten Transportströme muss außerdem die Datei /etv/vdr/plugins/streamdevhosts.conf angepasst werden. Diese Datei ist unter yaVDR 0.6 getemplated.

Beispieleinträge für /etc/vdr/plugins/streamdevhosts.conf (bzw. das Ziel des symbolischen Links /var/lib/vdr/plugins/streamdev-server/streamdevhosts.conf). 

127.0.0.1       1
192.168.1.115   2
192.168.1.0/24  3
192.168.0.0/16  4
0.0.0.0/0       5

1

Dieser Eintrag darf nicht entfernt werden, da sonst der VDR mit bestimmten Plugins nicht mehr richtig funktioniert!

2

Erlaubt dem Rechner mit der IP 192.168.1.115 den Zugriff

3

Erlaubt allen Rechnern, mit der IP 192.168.1.xxx den Zugriff

4

Erlaubt allen Rechnern in einem Class C Netzwerk (also mit IP 192.168.xxx.xxx, Standardeinstellung in yaVDR 0.6) den Zugriff auf den Streamdev-Server.

5

Erlaubt allen Rechnern unabhängig von ihrer IP den Zugriff (Achtung: Nicht empfohlen, da damit ein ungeschützter Zugriff auf die Kanäle des VDR von außerhalb des eigenen Netzwerks möglich ist, falls der VDR nicht durch einen Router mit NAT oder eine Firewall gesichert ist!)

Der Streamdev-Server stellt auf Port 3000 eine Webinterface mit Links zu den von ihm angeboteten Streams bereit. Unter http://<IP_des_VDR>:3000/channels.m3u kann man eine Playlist mit allen Sendern herunterladen. Ein geeigneter Stream-Client ist z.B. der VLC Media Player.

[Tipp]Radio-Sender streamen

Möchte man Radio-Sender streamen, sollte man als Übertragungsformat "ES" [30] wählen. Ein Beispiellink zum Stream sieht dann z.B. so aus: http://<IP_DES_VDR>:3000/ES/C-1-1093-28457A

[Tipp]extremux.sh

Um die externremux.sh nutzen zu können, muss das Paket mencoder nachinstalliert werden. Eine Beispieldatei ist bereits unter /var/lib/vdr/plugins/streamdev-server/externremux.sh zu finden.

Streamdev-Client

Das Streamdev-Client Plugin (Paketname: vdr-plugin-streamdev-client) erlaubt einem VDR auf das Streamdev-Server Plugin eines anderen VDR zuzugreifen und somit dessen DVB-Karten zu nutzen. Damit das klappt, müssen die gewünschten Kanäle aus der channels.conf des Servers in die channels.conf auf den Client kopiert werden und auf Server und Client die Verbindungseinstellungen angepasst werden. Es kann über eine Instanz des Streamdev-Clients immer nur ein Transponder übertragen werden.

Standardmäßig dürfen alle Clients in Class-C Netzwerken (IP-Bereich 192.168.xxx.xxx) auf den Streamdev-Server zugreifen. Falls man den Zugriff genauer steuern oder auf andere Adressbereiche erweitern möchte, muss man dies in der /etc/vdr/plugins/streamdev-server/streamdevhosts.conf entsprechend konfigurieren (siehe oben).

2.7.2. xvdr-Plugin

Das xvdr-Plugin erlaubt die Anbindung des VDR an KODI über das XVDR-PVR Addon aus dem Paket xbmc-addon-xvdr. Der Funktionsumfang umfasst aktuell Live-TV, EPG-Darstellung, das Verwalten von Timern sowie Zugriff auf die Aufnahmen des VDR. Einige Funktionen wie die Möglichkeit Schnittmarken zu benutzen und Aufnahmen zu schneiden sowie Einstellungen des VDR aus KODI heraus zu verändern sind aktuell nicht vorhanden. Das xvdr-Plugin ist multiuserfähig, d.h. es können mehrere KODI-Clients gleichzeitig auf einen VDR zugreifen und dessen Tuner und Aufnahmen nutzen.

Zugriffsrechte

Die Zugriffsberechtigungen für Clients werden in der /var/lib/vdr/plugins/xvdr/allowed_hosts.conf eingestellt. Die Syntax dieser Konfigurationsdatei entspricht der der svdrphosts.conf:

[Anmerkung]Zugriff von anderen Rechnern

Für den Zugriff von anderen Rechnern aus muss ggf. die Datei /var/lib/vdr/plugins/xvdr/allowed_hosts.conf angepasst werden. Einige Beispiele sind im folgenden aufgeführt:

Beispieleinträge für /var/lib/vdr/plugins/xvdr/allowed_hosts.conf

127.0.0.1       1
192.168.1.115   2
192.168.1.0/24  3
192.168.1.0/16  4
0.0.0.0/0       5

1

Dieser Eintrag sollte nicht entfernt werden, da sonst der lokale Zugriff von KODI aus auf den VDR nicht mehr funktioniert!

2

Erlaubt dem Rechner mit der IP 192.168.1.115 den Zugriff

3

Erlaubt allen Rechnern, deren IP mit 192.168.1. beginnt den Zugriff

4

Erlaubt allen Rechnern, deren IP mit 192.168. beginnt den Zugriff (entspricht Class C Subnetzen)

5

Erlaubt allen Rechnern unabhängig von ihrer IP den Zugriff (Achtung: damit ist ein ungeschützter Zugriff auf den VDR von außerhalb des eigenen Netzwerks möglich, falls der VDR nicht durch einen Router mit NAT [31] oder eine Firewall gesichert ist!)

2.7.3. vnsiserver-Plugin

Das vnsiserver-Plugin erlaubt die Anbindung des VDR an KODI über das vnsiserver-PVR Addon aus dem Paket kodi-pvr-vdr-vnsi. Der Funktionsumfang umfasst aktuell Live-TV, EPG-Darstellung, das Verwalten von Timern sowie Zugriff auf die Aufnahmen des VDR. Einige Funktionen wie die Möglichkeit Schnittmarken zu benutzen und Aufnahmen zu schneiden sowie Einstellungen des VDR aus KODI heraus zu verändern sind aktuell nicht vorhanden. Das vnsiserver-Plugin ist multiuserfähig, d.h. es können mehrere KODI-Clients gleichzeitig auf einen VDR zugreifen und dessen Tuner und Aufnahmen nutzen.

Zugriffsrechte

Die Zugriffsberechtigungen für Clients werden in der /var/lib/vdr/plugins/vnsiserver/allowed_hosts.conf eingestellt. Die Syntax dieser Konfigurationsdatei entspricht der der svdrphosts.conf:

[Anmerkung]Zugriff von anderen Rechnern

Für den Zugriff von anderen Rechnern aus muss ggf. die Datei /var/lib/vdr/plugins/vnsiserver/allowed_hosts.conf angepasst werden. Einige Beispiele sind im folgenden aufgeführt:

Beispieleinträge für /var/lib/vdr/plugins/vnsiserver/allowed_hosts.conf

127.0.0.1       1
192.168.1.115   2
192.168.1.0/24  3
192.168.1.0/16  4
0.0.0.0/0       5

1

Dieser Eintrag sollte nicht entfernt werden, da sonst der lokale Zugriff von KODI aus auf den VDR nicht mehr funktioniert!

2

Erlaubt dem Rechner mit der IP 192.168.1.115 den Zugriff

3

Erlaubt allen Rechnern, deren IP mit 192.168.1. beginnt den Zugriff

4

Erlaubt allen Rechnern, deren IP mit 192.168. beginnt den Zugriff (entspricht Class C Subnetzen)

5

Erlaubt allen Rechnern unabhängig von ihrer IP den Zugriff (Achtung: damit ist ein ungeschützter Zugriff auf den VDR von außerhalb des eigenen Netzwerks möglich, falls der VDR nicht durch einen Router mit NAT [32] oder eine Firewall gesichert ist!)

2.7.4. dfatmo Plugin

Das Programm dfatmo und das dazugehörige Plugin für den VDR können über die Pakete dfatmo und libxine-dfatmo-plugin installiert werden.[33]

Konfiguration

Um das Plugin nutzen zu können, müssen die Start-Argumente von xine bzw. vdr-sxfe in der Konfigurationsdatei /etc/init/vdr-frontend.conf angepasst werden. Diese Datei ist getemplated und sollte daher nicht direkt bearbeitet werden. Stattdessen muss der für das jeweilige Frontend passende Template-Teil (20_xineliboutput für vdr-sxfe und 25_xine für xine) aus /usr/share/yavdr/templates/etc/init/vdr-frontend.conf/ nach /etc/yavdr/templates_custom/etc/init/vdr-frontend.conf/ kopiert und die Variable XINELIBOUTPUTOPTS bzw. XINEOPTS darin entsprechend angepasst werden. Zum Schluss wird die Konfigurationsdatei neu aus den Templates erzeugt.

Im Folgenden ist das ganze Schritt für Schritt beschrieben:

sudo mkdir -p /etc/yavdr/templates_custom/etc/init/vdr-frontend.conf/ 1
sudo cp /usr/share/yavdr/templates/etc/init/vdr-frontend.conf/2* /etc/yavdr/templates_custom/etc/init/vdr-frontend.conf/ 2

1

Erstellt den Ordner für benutzerdefinierte Template-Teile

2

Kopiert die nötigen Template-Teile

In den Dateien die Variable XINE(LIBOUTPUT)OPTS erweitern:

XINELIBOUTPUTOPTS="--post tvtime:method=use_vo_driver --reconnect --audio=alsa --syslog --silent --tcp"
XINELIBOUTPUTOPTS="$XINELIBOUTPUTOPTS --post=dfatmo:driver=serial,driver_param=/dev/ttyUSB0,top=1,bottom=1,left=1,right=1,brightness=150,analyze_size=0,overscan=0,enabled=1"

bzw.

XINEOPTS="-G $GEOMETRY -A alsa --config /etc/xine/config --keymap=file:/etc/xine/keymap --post vdr --post vdr_video --post vdr_audio --verbose=2 --no-gui --no-logo --no-splash --deinterlace -pq"
XINEOPTS="$XINEOPTS --post=dfatmo:driver=serial,driver_param=/dev/ttyUSB0,top=1,bottom=1,left=1,right=1,brightness=150,analyze_size=0,overscan=0,enabled=1"

Die Konfigurationsdatei aus den Templates neu erstellen:

process-template /etc/init/vdr-frontend.conf

Und zuletzt Openbox neu starten:

sudo stop openbox
sudo start openbox

Ein/Ausschalten mit der Fernbedienung

Um das Atmolight per Fernbedienung schalten zu können, wurde die Taste KEY_BRIGHTNESS_CYCLE reserviert. Damit vdr-sxfe auf die Taste reagieren kann, muss es zwischen Eventlircd und VDR auf Tastendrücke lauschen. Die Variable XINELIBOUTPUTOPTS muss dann noch um die Hotkey-Unterstützung und den Socket von Eventlircd erweitert werden:

--hotkeys --lirc=/var/run/lirc/lircd

In der /etc/init/vdr.conf muss das Start-Argument --lircd=$LIRC entfernt werden.

2.7.5. RestfulAPI-Plugin

yaVDR 0.6 bringt das neu entwickelte RestfulAPI-Plugin mit, das als Alternative (oder Ergänzung) zu SVDRP konzipiert ist. Es setzt nicht mehr auf direkte TCP Kommunikation sondern erlaubt die Interaktion mit dem VDR über HTTP-Anfragen. Die Antworten des VDR werden in den Formaten HTML, XML oder JSON ausgeliefert.

Vorteile:

  • Die Übertragung großer Datenmengen (z.B. EPG-Einträge eines Kanals) ist schneller
  • Der VDR wird durch die Anfrage nicht blockiert, mehrere Clients stellen kein Problem dar
  • Die ausgegebenen Daten lassen sich leichter verarbeiten
  • Web-OSD für den VDR (noch in der Entwicklung) - damit kann jeder JS-fähige Browser das OSD des VDR darstellen
  • Auch EPG-Bilder und Kanallogos lassen sich leicht vom VDR abrufen

Nachteile:

  • Junges Plugin, das teilweise noch nicht den Funktionsumfang von SVDRP (gerade bei direkter Steuerung von Plugins) hat
  • Noch keine große Zahl an Clients, die das Protokoll ausreizen

Die API des Plugins kann man unter folgender Webadresse einsehen: http://<IP des VDR>:8002/info.html

2.7.6. Dynamite-Plugin

Dieses Plugin erlaubt es DVB-Geräte dynamisch in den VDR einzubinden und wieder zu entfernen, ohne dass ein Neustart des VDR notwendig ist. Somit kann der VDR schneller starten, ohne z.B. auf "langsame" USB-TV-Karten zu warten. Sobald diese Initialisiert sind, werden sie basierend auf udev-Regeln nachträglich eingebunden und können genutzt werden. Für die Zukunft ist ein optionales automatisches Abschalten von gerade nicht benötigten DVB-Karten geplant um Strom zu sparen und die Lebensdauer der Komponenten zu verlängern.

Ausführliche Informationen zum Plugin findet man in der beiliegenden README-Datei.

2.7.7. avahi4vdr

Das avahi4vdr Plugin erlaubt es avahi-Announcements bei laufendem VDR vorzunehmen. In der Voreinstellung werden der SVDRP-Port, das live-Plugin, streamdev-server und restfulapi angekündigt. Die vom Plugin angekündigten Dienste können in der getemplateten Konfigurationsdatei /var/lib/vdr/plugins/avahi4vdr/services.conf festgelegt werden.

2.7.8. epg2vdr

epg2vdr ermöglicht es das über DVB verbreitete Sender-EPG mit externen EPG-Quellen (es wird ein Plugin zur Nutzung der kostenpflichtigen Daten von http://www.epgdata.com wird im Quellcode mitgeliefert, Plugins für andere Quellen sind auch möglich) zu mischen und über die Episodenlisten von http://eplists.constabel.net/ mit Informationen zu Staffel- und Folgennummern anzureichern, was z.B. für Suchtimer mit epgsearch hilfreiche Zusatzmerkmale liefert. Da es eine zentrale Datenbank nutzt, eignet es sich auch gut, wenn mehrere VDRs zum Einsatz kommen.

Um das Plugin nutzen zu können, bedarf es weiterer Komponenten:

  • Das Programm epgd (aus dem Paket vdr-epg-daemon) kümmert sich um den Abruf der externen EPG-Quellen, Metainformationen für Sendungen und vorhandene Aufnahmen und das Mischen des externen mit dem Sender-EPG. Außerdem ermöglicht es die Nutzung des scraper2vdr-Plugins.
  • Die anfallenden Daten werden in einer MySQL-Datenbank abgelegt, die auf einem ausreichend dimensionierten Rechner laufen sollte. ARM-Boards mit >= 2GB RAM und guter I/O Anbindung (z.B. Cubietruck mit SSD) eignen sich ebenfalls um den vdr-epg-daemon und die MySQL-Datenbank zu hosten. Idealerweise nutzt man einen bestehenden Server im Netzwerk, der rund um die Uhr läuft, notfalls kann man alle Komponenten aber auch auf dem VDR selbst betreiben.

Installation und Konfiguration

Auf dem Rechner, der die Datenbank bereitstellen soll, werden die Pakete mysql-server und vdr-epg-daemon installiert.

[Anmerkung]Hinweis

Falls gewünscht können der vdr-epg-daemon und MySQL (bzw. MariaDB) auch auf getrennten Rechnern installiert werden. In diesem Fall muss das MySQL-Plugin epglv für den Rechner mit der MySQL-Datenbank gebaut und mit dieser gemäß der README bekannt gemacht werden.

Die initiale Konfiguration von MySQL bzw. MariaDB kann so erfolgen: 

$ sudo apt-get install mysql-server
$ sudo apt-get install vdr-epg-daemon
$ sudo sed -i 's/^bind-address/# bind-address/' /etc/mysql/my.cnf
$ sudo sed -i 's/^log_bin/# log_bin/' /etc/mysql/my.cnf # optional, verbessert die Performance, verschlechtert Wiederherstellbarkeit der Daten
$ sudo mysql -u root -p
mysql> CREATE DATABASE epg2vdr charset utf8; # Datenbank anlegen
mysql> CREATE USER 'epg2vdr'@'%' IDENTIFIED BY 'epg'; # Nutzer anlegen, Passwort ist "epg"
mysql> GRANT ALL PRIVILEGES ON epg2vdr.* TO 'epg2vdr'@'%'; # Zugriff übers Netzwerk erlauben
mysql> GRANT ALL PRIVILEGES ON epg2vdr.* TO 'epg2vdr'@'localhost' IDENTIFIED BY 'epg'; # Zugriff vom lokalen System aus zulassen
mysql> FLUSH PRIVILEGES; # Änderungen an Berechtigungen übernehmen
mysql> USE epg2vdr; # in Datenbank wechseln
mysql> DROP FUNCTION IF EXISTS epglv; # falls vorhanden alte Funktion entfernen
mysql> DROP FUNCTION IF EXISTS epglvr; # dito
mysql> CREATE FUNCTION epglv RETURNS INT SONAME 'mysqlepglv.so'; # Funktion aus externem Plugin hinzufügen
mysql> CREATE FUNCTION epglvr RETURNS INT SONAME 'mysqlepglv.so'; # Funktion aus externem Plugin hinzufügen
# mysql mit STRG+D verlassen, dann MySQL-Server neu starten:
$ sudo service mysql restart

Die weitere Konfiguration erfolgt gemäß der README. Wichtig ist die Konfigurationsdateien im Verzeichnis /etc/epgd/ auf die eigene Konfiguration anzupassen, insbesondere die Dateien channelmap.conf und die epgd.conf

Nach der Konfiguration kann epgd gestartet werden: 

sudo start epgd

Auf den Clients wird das Paket vdr-plugin-epg2vdr und falls gewünscht auch vdr-plugin-scraper2vdr installiert. Dann wird der VDR gestoppt und die Datei /var/cache/vdr/epg.data gelöscht. Nach dem erneuten Start des VDR muss jetzt noch im Plugin-Setup die Adresse und die Zugangsdaten für den MySQL-Server eingetragen und der VDR abermals neu gestartet werden.

Vor- und Nachteile gegenüber xmltv2vdr

epg2vdr setzt auf eine Server-Client Struktur und benötigt eine (recht ressourcenhungrige) MySQL-Datenbank, kann dafür aber mehrere VDRs mit EPG-Informationen versorgen. Neben dem Import von EPG-Daten und Bildern für die Sendungen ermöglicht es auch das Herunterladen von Metadaten aus der TVDB und MovieDB für Sendungen und bestehende Aufnahmen, die dann vom scrapber2vdr-Plugin am VDR genutzt werden können. Die Konfiguration erfolgt mit Ausnahme des epg2vdr-Plugins (das sich über das OSD konfigurieren lässt) über Textdateien und in der Shell.

xmltv2vdr nutzt dagegen eine lokale sqlite-Datenbank, die nur einen Client zulässt. Somit muss jeder einzelne VDR den kompletten Datensatzt selbst pflegen. Die komplette Konfiguration (Zuordnung der Sender, Update-Intervalle usw.) erfolgt über das OSD des VDR.

Beide Lösungen ermöglichen die Nutzung der Episodenlisten von http://eplists.constabel.net/ um das EPG für dort erfasste Serien mit Staffel- und Episodeninformationen anzureichern.