Streamdev-plugin
Inhaltsverzeichnis |
Beschreibung
Das Streamdevice Plugin ist die Netzwerkerweiterung des VDR. Es wurde von Sascha Volkenandt geschrieben und besteht aus zwei Teilen:
- Streamdev-server
- Streamdev-client
Für das Verständnis des Plugins betrachten wir das Linux-Programm "sort". Es empfängt einen Datenstrom von der Standardeingabe, sortiert ihn und schickt ihn zur Standardausgabe. Die Standardeingabe ist normalerweise am Gerät "Tastatur" und die Ausgabe am Gerät "Monitor" angeschlossen. Effektiver ist es natürlich, die Datenströme umzuleiten und an Dateien anzuschließen:
sort < unsortiert.txt > sortiert.txt
Beim VDR kann es mehrere Ein- und Ausgabedatenströme geben. Diese sind normalerweise an den Geräten Tuner und Decoder angeschlossen, können aber auch an Plugins umgeleitet werden. Aufnahmen kann man in diesem Zusammenhang wie "eingefrorene" Datenströme auffassen.
Das Streamdev Plugin ist nun in der Lage, Ausgabedatenströme entgegenzunehmen, über das Netzwerk an andere Rechner zu versenden und dort als Eingabedatenströme wieder abzuliefern.
Möglichkeiten
normale Arbeitsstationen
Es kann auf ganz normalen Rechnern, die am Netzwerk hängen, ferngesehen werden. Leider gibt es noch keine Möglichkeit wie man direkt Timer bearbeiten kann, aber dafür gibt es ja den genialen Vdradmin.
Konsolen und andere starke Clients
XBoxen usw. können genauso wie ganz normale Arbeitsstationen über ihre Mediaplayer meistens die Videostreams abspielen.
Linux Clients
Es kann zum Beispiel mit dem Xine-plugin oder dem Softdevice-plugin ein VDR auch ohne DVB-Karte in einem Linux Rechner betrieben werden. In verbindung mit LIRC steht so eine Konfiguration einem normalen vdr in nichts nach. Mit dem umweg über Linux kann man auch auf der X-Box so einen VDR mit OSD zum laufen bekommen.
Streamdev-server
Dieses Plugin stellt für den VDR, welcher das Plugin gestartet hat, ein Ausgabegerät dar. Der VDR kann es wie den Decoderteil einer Fullfeatured DVB-Karte benutzen und MPEG2-Daten von Live-TV oder von VDR-Aufnahmen dorthin senden, auch mehrere gleichzeitig. Das Plugin zeigt natürlich die Daten nicht an, sondern packt die Videoströme in ein anderes Streamingformat und versendet sie per Netzwerk an einen anderen Rechner.
Es wird dann noch ein Eingabegerät für den VDR benötigt.
Streamdev-client
Dieses Plugin verhält sich gegenüber VDR, welcher das Plugin gestartet hat, wie ein Eingabegerät. Es empfängt Videoströme per Netzwerk, wandelt das Streamingformat erneut und übergibt die Ströme an VDR. Die Daten werden vom VDR verarbeitet, als kämen sie von einer DVB-Karte.
Ein Ausgabegerät muss noch bereitgestellt werden, entweder mit einer echten Fullfeatured DVB-Karte oder über ein anderes Plugin (Dxr3-, Softdevice-, Xine-plugin).
Clientlösung mit Xine-Plugin - Skizze zum Verständnis: Link
Zusammenspiel
- VDR1
- Eingabedatenströme von
- DVB-Karte(n)
- Ausgabedatenströme an
- Decoder
- Streamdev-server Plugin (sendet an VDR2 und VDR3)
- Eingabedatenströme von
- VDR2
- Eingabedatenströme von
- DVB-Karte(n)
- Streamdev-client Plugin (empfängt von VDR1)
- Ausgabedatenströme an
- Decoder
- VDR3
- Eingabedatenstrom von
- Streamdev-client Plugin (empfängt von VDR1)
- Ausgabedatenstrom an
- Softdevice Plugin
- Eingabedatenstrom von
Dabei kann man die Verbindungen auch mischen. Zwei VDR können sich ihre DVB-Karten gegenseitig zur Verfügung stellen.
Der Fantasie sind dabei (fast) keine Grenzen gesetzt. Es muss aber gesichert sein, dass mindestens ein Eingabedatenstrom mit dem Gerät "Tuner" und ein Ausgabedatenstrom mit dem Gerät "Decoder" (Fernseher) verbunden ist.
Soweit die idealisierte Theorie. In der Praxis gibt es da noch einige Schwierigkeiten zu überwinden, da der VDR von sich aus eigentlich nicht netzwerkfähig ist. So haben wir weitere Verbindungen für die Steuerung und das OSD zu berücksichtigen.
Beispiele
Beispiel 1:
Es gibt einen VDR mit mehreren DVB-Karten und einem installierten streamdev-server. Ein weitere VDR der per Netzwerk angeschlossen ist streamt sich alles da er keine DVB Karte als Eingang hat sondern eine DXR-3 Karte, Softdevice-plugin, Xine-plugin oder Fullfeatured DVB-Karte ohne angeschlossener SatLeitung.
Beispiel 2:
Es gibt mehrere VDRs mit je einer DVB-karte die alle unabhänig voneinander laufen. Jedoch gibt es ein gemeinsames Videoverzeichnis auf einem Server das per SMB oder NFS mit den Clients verbunden wird. Empfehlenswert ist NFS. Wenn ein Server zum Einsatz kommt dann kann man diesem mehrere Budget DVB-Karten geben, so dass alle aufnahmen zentral gemacht werden. So muss nur ein System an sein, wenn Aufnahmen anstehen und es muss nur ein System auf besonders hohe Energiesparung ausgelegt werden. Um die Clients besonders leise zu bekommen, kann man ja durch den Server auf Aufnahme Festplatten verzichten, und die Clients per Netzwerk booten lassen. So ist kein bewegtes Teil mehr im VDR. Als Alternative zum Netzwerk boot gibt es noch die Möglichkeit über einen IDE nach Compact Flash Wandler zu booten, was den beonderen gimmick bietet, dass jeder User auch seine eigene CF-Karte in den vor ihn stehenden Client zu schieben.
Beispiel 3:
Es gibt einen Server mit Budgetkarten und eine unbestimmte Anzahl von Clients die sich per VLC oder Mplayer mit Streamingcontrol das programm streamen. In verbindung mit Vdradmin kann auch von den Clients aus administriert (Timer, Aufnahmen löschen) werden.
Installation
Da es keine externen Abhängigkeiten gibt, gestaltet sich die Installation recht einfach. Es wird installiert, wie jedes andere Plugin Installation. Eine Besonderheit besteht darin, dass beim Übersetzen gleich zwei Plugins entstehen, der server und der client.
cp $SOURCEDIR/VDR/PLUGINS/src/streamdev/*.conf.example /etc/vdr/plugins/streamdevhosts.conf
Probleme
Umschaltprobleme
Komischerweise hat jeder, hatte ich(BlackKing) auch, mit dem Streamdev-Server ein Problem:
Man kann immer nur den Kanal anschauen welcher auch gerade auf dem VDR-Server eingestellt ist. Da viele dieses Problem haben, und ich hoffe das jeder diese Stelle hier durchließt, hoffe ich das ich es vielen Leuten leichter mache.
Hintergrund: Dieses Problem tritt nur dann auf wenn man nur eine DVB-Karte eingebaut hat, mehrere Karten hat, diese aber alle mit aufnahmen beschäftigt sind. Der VDR schaut auch immer einen Sender, auch wenn er nichtmal ein Ausgabedevice hat.
Da nirgends so richtig dieses Problem beschrieben ist, und es überall nur heißt man soll suchen usw. schreibe ich es nochmal hier:
Lösung:
Im OSD folgen wir diesen Menüpunkten:
OSD --> Einstellungen --> Plugins --> streamdev-server
Beim pausierverhalten stellen wir nun "immer pausieren" ein, und nun schaltet der streamdev-server den VDR auf den Kanal den man streamen will und dann funktioniert es.....
Sonstiges
- Mit der neuen Version klappt der Verbindungsaufbau zu Clients stabiler.
- Bei Wireless lan verbindungen könnte die Durchsatzrate nicht ausreichen. Wenn es starke Schwankungen in der Übertragungsrate gibt, aber es im Durchschnitt reicht, dann wäre es als Tipp ratsamm den Puffer höher zu stellen.
CVS
cvs -d:pserver:anoncvs@vdr-developer.org:/var/cvsroot login cvs -d:pserver:anoncvs@vdr-developer.org:/var/cvsroot co streamdev
Links
[1] | http://www.magoa.net/linux | Homepage des Plugins |
[2] | http://www.magoa.net/linux/contrib | Archiv |
[3] | http://www.notebook-community.info/streaming | VDR Streamingcontrol |
[4] | http://www.m-i-b-u.de/vdrsp | VDR Stream Player |
[5] | http://kurzschluss.bei.t-online.de/SetupWinVDRZap.exe | WinVDRZap |