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 1.7.x 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.5 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.5 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.5) 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" [33] wählen. Ein Beispiellink zum Stream sieht dann z.B. so aus: http://<IP_DES_VDR>:3000/ES/C-1-1093-28457

[Tipp]extremux.sh

Um die externremux.sh nutzen zu können, muss das Paket mencoder nachinstalliert werden. Eine Beispieldatei ist bereits unter /usr/share/doc/vdr-plugin-streamdev-server/examples/externremux.sh.gz zu finden und kann nach /var/lib/vdr/plugins/streamdev-server/externremux.sh entpackt werden

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-Bereicht 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 experiementellen XBMC-Versionen mit PVR-Unterstützung Funktionen des VDR in von XBMC zu nutzen. 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 XBMC heraus zu verändern sind aktuell nicht vorhanden. Das xvdr-Plugin ist Multiuserfähig, d.h. es können mehrere XBMC-Clients auf einen VDR zugreifen und diesen nutzen.

Zugriffsrechte

Der Zugriff für von außen zugreifende Clients wird 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 XBMC 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 [34] oder eine Firewall gesichert ist!)

2.7.3. 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.[35]

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.4. RestfulAPI-Plugin

yaVDR 0.5 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.5. 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.