Project

General

Profile

UPnP/DLNA Plugin

Das UPnP-AV/DLNA-Plugin für den VDR soll es ermöglichen, mit handelsüblichen UPnP-fähigen Geräten oder Software auf die Freigaben des VDRs zuzugreifen. Dazu zählt neben Aufnahmen natürlich auch LiveTV.

Nützliches Plugin?

Euch gefällt das Plugin und ihr wollt es unterstützen? Dann spendet und helft uns, weitere Geräte testen zu können. Eure Spenden fließen zu 100% in neue Testgeräte hinein, die IHR aussuchen könnt.

Spender

Die hier genannten Nutzer haben das Projekt unterstützt:

  • tr500
  • und 1 weiteren Spender

Ich danke diesen vielmals!

Installation

Abhängigkeiten

Zunächst müssen die benötigten Bibliotheken installiert werden:

apt-get install libupnp3-dev libsqlite3 libsqlite3-dev libboost-dev libcxxtools-dev libtntdb-dev libtntnet-dev libtntnet9 libtntdb2 tntdb-sqlite2 libsqlite3-0 libupnp3

Ein Patchen der libupnp-1.6.X ist nicht mehr notwendig, da für die Streaminginhalte tntnet verwendet wird, wo eigene Header möglich sind. Es wird libupnp-1.6.X genutzt, da die 1.8.X offenbar (noch) nicht offiziell unterstützt wird.

Plugin bauen

Nun kann man die Sourcen des Plugins herunterladen und installieren

cd $VDRDIR/PLUGINS/src/
git clone git://projects.vdr-developer.org/vdr-plugin-upnp.git upnp
cd upnp
git checkout origin/master
make

Mediaplugins bauen

Das UPnP-Plugin bietet selbst auch wieder eine Pluginschnittstelle, um die Vielzahl an DLNA-Profile ansteuern und auslesen zu können. Diese befinden sich im Unterverzeichnis:

"./plugins/"

Jedes Sub-Plugin hat ein eigenes Makefile. Somit muss lediglich mit

make

das Sub-Plugin gebaut werden. Alternativ können im Hauptverzeichnis des UPnP-Plugins mit

make subplugins

alle Sub-Plugins auf einmal gebaut werden.

Da die Plugins gegen das UPnP-Plugin gelinkt werden muss, muss die Umgebungsvariable VDRLIBDIR auf das Verzeichnis zeigen, wo die libvdr-upnp.so liegt. Standardmäßig ist das das LIBDIR-Verzeichnis.

Anschließend müssen die gebauten Sub-Plugins in das LIBDIR-Verzeichnis kopiert werden, z.B. bei /usr/lib/vdr:

cp libupnp-dvb-profiler.so.1.0.0 /usr/lib/vdr/plugins/

Statische Inhalte kopieren

Der Ordner httpdocs muss in das Resourcenverzeichnis kopiert werden, z.B.:

cp httpdocs /var/lib/vdr/plugins/upnp/

externremux.sh

Folgende externremux.sh sollte für das Streaming von Live-TV verwendet werden: http://projects.vdr-developer.org/attachments/download/1085/externremux.sh

Verfügbare Patches

Jobs pro Thread

Die libupnp-1.6.6 hat standardmäßig 10 Jobs pro Thread eingestellt. Hierin besteht allerdings das Problem, dass die Jobs gequeuet werden. Somit werden alle Anfragen nacheinander abgearbeitet und eine parallele Anfrage oder gar mehrere Streams sind nicht möglich. Das lässt sich durch Anpassen der libupnp ändern:

upnp/src/inc/config.h:

-#define JOBS_PER_THREAD   10
+#define JOBS_PER_THREAD   1

Es können zusätzlich individuell die Anzahl der Threads erhöht werden, so dass mehr Anfragen beantwortet werden können. Allerdings sollte diese nicht zu hoch gewählt werden, da das auch nicht gerade performant sein könnte.

Getestete Geräte

Bisher wurden folgende Geräte mit LiveTV getestet (v.0.0.2-alpha):

  • Xtreamer.net Xtreamer (Firmware 2.0.1)
  • XBMC
  • Windows Media Player 12 (Windows 7)
  • Popcorn Hour C-200
  • Popcorn Hour A-100
  • Pioneer BDPLX70A
  • Sony Playstation 3

Bilder des Plugins in Aktion:

Der Pioneer BDPLX70A und ARD HD:

Windows Media Player unter Windows 7 beim Puffern: