Streaming

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Wir unterscheiden (vorläufig) vier verschiedene Anforderungen an das Streaming-Profil des Servers:

  • Live-Streaming der Fernsehkanäle,
  • Live-Streaming der Radiokanäle,
  • Aufzeichnungen,
  • Live-Streaming der Fernseh- und Radiokanäle + Aufzeichnungen.

Je nachdem, welches Profil gewünscht wird, gibt es unterschiedliche Ansätze, um den Anforderungen gerecht zu werden:

Inhaltsverzeichnis

Streaming von Fernsehkanälen

Zum Streaming von Fernsehkanälen mit dem VDR wird das Streamdev-plugin auf dem VDR als Serveranwendung und mit einem der folgenden Programmen auf dem Client zur Anzeige genutzt:

Software

  • MPlayer (Linux, Windows, Mac OSX) [1]
  • Xine-Player (Linux) [2]
  • VLC (Linux, Windows, Mac OSX) [3]
  • Winamp (Windows) [4]
  • Media Player Classic (Windows) [5]
  • VDRMediaClient (Windows)

Das Streamdev-plugin kann entweder direkt über ein der obrigen Programme angesprochen werden oder aber indirekt über Webinterfaces wie Vdradmin oder Xxv aufgerufen werden.

Hier am Beispiel des MPlayer, wird das Streaming von Fernsehkanälen mit folgendem Befehl gestartet, die sich aus Anwendungsnamen und der URL für das Streaming zusammensetzt.

Linux:    mplayer http://192.168.0.200:3000/PES/3
Windows:  C:\Programme\mplayer\mplayer http://192.168.0.200:3000/PES/3
Mac OSX:  "/Applications/Programme/MPlayer/MPlayer OS X 2.app/Contents/Resources/mplayer.app/Contents/MacOS/mplayer" \                            
          http://192.168.0.200:3000/PES/3

Diese Eingabe erfolgt in der Eingabeaufforderung bzw. einem Terminal- oder Konsolenprogramm.

Aufbau der URL

Die URL (Uniform Resource Locator) definiert den gewünschten Fernsehkanal, der über das Netzwerk angezeigt werden soll. Eine Clientanwendung spricht dabei jeden einzelnen Fernsehkanal des VDR über eine eigene URL-Adresse an. Der Aufbau einer URL entspricht dem normalen Zugriff auf Internetseiten im Browser, da das HTTP-Protokoll als Steuerkanal verwendet wird.


Die URL Adresse http://192.168.0.200:3000/PES/3 setzt sich wie folgt zusammen:

  • http:// : Netzwerkprotokoll
  • 192.168.0.200 : IP des VDR-Rechners
  • 3000 : Port über den das Streamdev streamt (s. OSD|Einstellungen)
  • PES : Datenkodierung, zur Verfügung stehen PES, TS, PS und ES
  • 3 : Kanal-Nummer, entsprechend der Reihenfolge der Kanäle in channels.conf
  • +2 : ein optionaler Parameter, der den verwendeten Audiokanal angibt : http://192.168.0.200:3000/PES/3+2


Alternativ zur Kanalnummer, die sich ja durch Verschiebungen in der Kanalliste ändern kann, kann in der URL auch eine eindeutige Kanal-ID übergeben werden, z.B. für die ARD auf Astra S19.2E : http://192.168.1.200:3000/PES/S19.2E-1-1101-28106 .

Diese Kanal ID hat das Format Quelle-NID-TID-SID der Einträge aus der channels.conf.

Wird die URL http://192.168.1.200:3000, ohne weitere Parameter im Browser aufgerufen, erstellt das Streamdev-plugin eine Webseite, die als Basis für das Streaming von Fernsehkanälen verwendet werden kann. Diese einfache Webseite enthält eine Linkliste der Stream-URLs aller Kanäle des VDR.



Mit diesem Skript lässt sich eine Liste aller Stream-URLs aus der eigenen channels.conf generieren.

VDRADRESS="192.168.0.200" && \
CHANNELSCONF="/etc/vdr/channels.conf" && \
VDRPORT="3000" && STREAMTYP="PS" && \
cat $CHANNELSCONF | sed \
's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/http:\/\/'$VDRADRESS':'$VDRPORT'\/'$STREAMTYP'\/\3-\6-\7-\5\ #\ \ \1/g'

Streaming mittels MPlayer

Linux

Eventuell muss unter Linux noch die Option -vo /dev/... zur Angabe des Geräts für Video-Output ergänzt werden (vgl. mplayer --help).

Windows

Anscheinend funktioniert das Streaming bislang unter Windows nur ansatzweise (obschon von Mal zu Mal besser) und scheint extrem davon abzuhängen, wie Plugin, Player und Tools aufeinander abgestimmt sind (vgl. [6]).

MacOSX

MPlayer spielt unter Umständen keine Streams ab, wenn es aus dem Finder heraus aufgerufen wird. Statt dessen kann man das Programm aus dem Terminal starten; dann stehen Optionen zur Verfügung, mit denen auch auf langsameren Rechnern Streams dargestellt werden können, etwa "-cache 8192 -framedrop"; Skalierung mit "-xy 0.5"). Der etwas kryptische Pfad muss dann mit angegeben werden -- es sein denn, man setzt einen Symlink (Adminrechte erforderlich):

sudo ln -s /Applications/Programm/MPlayer/MPlayer\ OS\ X\ 2.app/\
Contents/Resources/mplayer.app/Contents/MacOS/mplayer /usr/bin/mplayer

Anschließend kann man aus dem Terminal aufrufen:

mplayer http://192.168.1.200:3000/PS/1

Streaming mittels VLC

Eine Alternative v.a. für ältere Rechner stellt ein aktueller VideoLanClient (VLC) dar. Die Version 0.8.4 spielt bspw. bereits an einem Macintosh G3 333MHz unter leichtem Ruckeln ab - deutlich besser als mit einem aktuellen MPlayer. VLC ist am Macintosh für ältere Rechner empfehlenswert, es gibt aber auch Einschränkungen :[7]


Mac OSX (Intel)

Zumindestens ab Nighly Build 0.8.5 funktioniert VLC recht gut auf einem Intel Mac ! Für ARD Sender PES, der Rest PS und Radio ES.

Streaming von Radiokanälen

Für das Streaming von Radiokanälen muss man die URL (s.o.) in ein Streaming-Programm eingeben. Leider funktioniert das nicht mit allen Programmen, da viele wohl Video-Daten erwarten. Anders als bei TV-Streams sollte man den ES-Streamtyp verwenden, sonst tritt oft Knacken auf oder es bleibt ganz still.

Eine schnelle Übersicht der jeweiligen Adressen aller Radiosender bringt im Terminal ein:

cat /etc/vdr/channels.conf | egrep \
'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*' | sed \
's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ \
http:\/\/192.168.1.200:3000\/ES\/\3-\6-\7-\5 #\1/g' 

Programme für Audio-Streams

Die Programme die Videostream wiedergeben können, können im allgemeinen auch die Audio-Streams wiedergeben, dazu gehören :

Streaming von Aufzeichnungen

Man kann über den HTTP Server des streamdev-plugin keine Aufzeichnungen streamen, aber der Aufruf dürfte wegen des langen Dateinamens ohnehin ziemlich umständlich sein. Die einfachsten Lösungen beruhen daher auf Netzwerkfreigaben. Dies kann über eine Samba-Freigabe oder eine NFS-Freigabe erfolgen.

Da der VDR die Aufnahmen in mehrere Dateien anlegt, könnte man vor der Wiedergabe diese Dateien zu einer einzelnen Datei zusammenfassen, damit die Wiedergabe nicht für jede Datei separat gestartet werden muss. Diese Kopieraktion dauert aber eine paar Minuten, da in der Regel mehrere GB Dateien kopiert werden müssen.

cat 0*.vdr > all.vdr

Unter Linux

Als Alternative zum Zugriff über eine Netzwerkfreigabe und auch einfacher als der umständliche Aufruf eines Programmes mit dem langen Pfad einer Aufzeichnung dürfte es sein, auf dem Linux-Client einen VDR selber als Client zu verwenden. Im Zusammenspiel mit dem Xine-plugin kann damit ein VDR ohne DVB-Karte aufgebaut werden. Siehe auch weiter unten im Abschnitt Streaming von Fernsehen und Aufzeichnungen|

Unter Windows

Der einfachste Weg unter Windows geht über eine Netzwerkfreigabe per Samba. Sodann bietet es sich an, die Dateiendung *.vdr dem MPlayer zuzuordnen, und schon genügt ein Doppelklick auf die Datei, um die Wiedergabe per MPlayer zu starten. Man kann natürlich auch jedes andere Programm der Dateiendung zuordnen.

Streaming von Fernsehen und Aufzeichnungen

Für das Streaming von Fernsehsendungen und Aufzeichnungen in einer Umgebung stehen mehrere Möglichkeiten zur Verfügung. Mit dem Streamdev-plugin ist eine klassische VDR-to-VDR-Lösung möglich, bei dem mehrere VDR ein Hausnetzwerk aufbauen können und über dieses Netzwerk Fernsehen und Aufzeichnungen teilen können. Im einfachsten Fall benötigt VDR eine DVB-Karte zur Ausgabe.

Mittels des Einsatzes des Streamdev-plugins und des Xine-plugins als Ausgabegerät kann auch ein VDR als Streamclient aufgesetzt werden, der auf Linuxsystemen lauffähig ist, auf dem keine DVB-Karte installiert ist.

Eine weitere einfache Lösung eines Streamclients stellt der Xine-Player dar.

Streaming zur DBOX2 und Dreambox

Es ist ebenfalls eine DBOX2 und Dreambox als Streamclient zu verwenden. Ermöglicht wird das über das ffnetdev-plugin des VDR und einem vdr(-viewer)-Plugin für die DBOX2