Streaming

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (Links: Link korrigiert)
K (Link für createXSPFplaylist.pl gefixt)
 
(100 dazwischenliegende Versionen von 53 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Wir unterscheiden (vorläufig) vier verschiedene Anforderungen an das Streaming-Profil des Servers: 1) Live-Streaming der Fernsehkanäle, 2) Live-Streaming der Radiokanäle, 3) Aufzeichnungen, 4) Live-Streaming der Fernseh- und Radiokanäle + Aufzeichnungen.  
+
Dieser Artikel befasst sich hauptsächlich mit dem Streamen von Audio oder Video von einem VDR zu einem anderen PC. Mit dem Streamen zu einem sogenannten Streaming Client, oft auch als UPnP-Media-Renderer bekannt, befaßt sich der Artikel [[Streaming Clients]].
  
Je nachdem, ob 1), 2), 3)  oder 4) gewünscht sind, gibt es unterschiedliche Ansätze, um den Anforderungen gerecht zu werden:
+
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.
  
== Streaming von Fernsehkanälen ==
+
Je nachdem, welches Profil gewünscht wird, gibt es unterschiedliche Ansätze, um den Anforderungen gerecht zu werden:
Zum Streaming von Fernsehkanälen mit dem VDR wird das [[Streamdev-plugin]] (Server) in der Praxis mit folgenden Client-Playern genutzt:
+
  
'''Software'''
+
= Streaming von Fernsehkanälen =
* MPlayer (Linux, Windows, Mac OSX) [http://www.mplayerhq.hu/homepage/design7/dload.html]
+
Meist wird die klassische Variante, unter Verwendung des [[Streamdev-plugin]] als Serveranwendung und mit einem der folgenden Programmen auf dem Client zur Anzeige benutzt:
* Xine-Player (Linux) [http://mitglied.lycos.de/peterweber69/]
+
* VLC (Linux, Windows, Mac OSX) [http://www.videolan.org/vlc/]  '''(am Mac für ältere Rechner empfehlenswert, sonst eher nicht  [http://www.vdrportal.de/board/thread.php?threadid=28266&sid=])
+
* Winamp (Windows) [http://www.winamp.com/player/]'''
+
* [[VDRMediaClient]] (Windows)
+
* Media Player Classic (Windows) [http://sourceforge.net/projects/guliverkli]
+
  
Das [[Streamdev-plugin]] kann entweder direkt über den Client-Player angesprochen werden oder aber indirekt über praktische Tools wie z.B. den [[Vdradmin]] oder den [[Streamingcontrol]] (nur für Windows).
+
==Software==
 +
* [http://www.videolan.org VLC media player]
 +
* [http://www.mplayerhq.hu linux MPlayer]
 +
* [[EasyStream]]
 +
* [[VDR-Zapper]]
 +
* [[VDR Channel Chooser]]
 +
* Xine Player
 +
* Media Player Classic
  
Mit dem MPlayer kann ein Stream z.B. mit folgendem Befehl gestartet werden:
 
  
<pre>
+
Der Stream vom [[Streamdev-plugin]] kann
Linux:    user@client> mplayer http://192.168.0.200:3000/PES/3
+
* durch Angabe der Streaming-URL, z.B. <pre>mplayer http://192.168.0.200:3000/PES/3</pre>
Windows:  C:\Programme\mplayer\mplayer http://192.168.0.200:3000/PES/3
+
* durch das Webinterface von streamdev
Mac OSX im Terminal: "/Applications/Programme/MPlayer/MPlayer OS X 2.app/Contents/Resources/mplayer.app/Contents/MacOS/mplayer" http://192.168.0.200:3000/PES/3
+
* Webinterfaces wie [[Vdradmin AM]] oder [[Xxv]]
</pre>
+
abgerufen werden.
'''Die Stream URL'''
+
Der Client spricht jedes einzelne Programm am VDR-Server per Netzwerk über eine einzigartige Adresse an (genau wie Internetseiten). Diese Adresse setzt sich wie folgt zusammen:
+
  
 +
==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.
  
* 192.168.0.200 = IP des VDR-Servers
 
* 3000 = Port über den das Streamdev per default streamt (s. OSD|Einstellungen)
 
* PES = Packetized Elementary Stream (PES) - neben MPEG-2 Transport Stream (TS),  MPEG-2 Program Stream (PS) und Elementary Stream (ES)
 
* 3 = Kanal-Nummer (entsprechend der Reihenfolge der Kanäle in channels.conf)
 
  
Also zusammen: <pre>192.168.0.200:3000/PES/3</pre>
+
Die URL Adresse <nowiki>http://192.168.0.200:3000/PES/3</nowiki> setzt sich wie folgt zusammen:
 +
* <nowiki>http://</nowiki> : 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]], [[ES]] und [[externremux.sh|Extern]]
 +
* 3 : Kanal-Nummer, entsprechend der Reihenfolge der Kanäle in [[channels.conf]]
 +
* +2 : ein optionaler Parameter, der den verwendeten Audiokanal angibt : <nowiki>http://192.168.0.200:3000/PES/3+2</nowiki>
  
Alternativ zur Kanalnummer (die sich ja hin und wieder ändern kann) kann dem Server auch eine programmplatzunabhängige eindeutige ID übergeben werden. Diese ist identisch mit der ID, die z.B. auch tvmovie2vdr benutzt und setzt sich zusammen aus den [[Syntax_der_channels.conf|channels.conf]]- Einträgen Quelle NID TID SID, jeweils durch "-" getrennt.
 
  
In diesem Fall z.B. : <pre>http://192.168.1.100:3000/ES/C-1-1073-28214</pre>
+
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 : <nowiki>http://192.168.1.200:3000/PES/S19.2E-1-1101-28106</nowiki> .
  
Mit diesem Einzeiler lässt sich nach anpassen der VDR-IP usw. eine Liste der Stream-URLs für die eigene Channels.conf ausgeben:
+
Diese Kanal ID hat das Format Quelle-[[NID]]-[[TID]]-[[SID]] der Einträge aus der [[channels.conf]].
  
 +
Wird die URL <nowiki>http://192.168.1.200:3000</nowiki>, 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.
 
<pre>
 
<pre>
VDRADRESS="192.168.1.190" && CHANNELSCONF="/var/lib/vdrdevel/channels.conf" && VDRPORT="3000" && STREAMTYP="PS" && cat $CHANNELSCONF | sed 's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/http:\/\/'$VDRADRESS':'$VDRPORT'\/'$STREAMTYP'\/\3-\6-\7-\5\ #\ \ \1/g'
+
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'
 
</pre>
 
</pre>
  
Es ist auch möglich, Senderdateien für die jeweiligen Stream-Clients zu erstellen, auf Skripte hierzu wird bei der Software verwiesen
 
  
Um einen Stream aus dem VDRAdmin direkt zu starten kann der [[Mplayerstarter]] verwendet werden.
+
Zum Streaming von Fernsehkanälen mit dem VDR kann auch das [[Vompserver-plugin]] mit [[VompClient]] verwendet werden.  
Nützliche Tools, um sich die etwas kryptische Eingabe dieser Daten im Alltag zu ersparen, sind die bereits genannten [[Vdradmin]] und [[Streamingcontrol]], wobei der erstere plattformunabhängig über den Browser funktioniert bzw. funktionieren sollte (es aber oft nicht tut) und der letztere lediglich unter Windows (idealerweise mit dem mitgelieferten MPlayer im Verzeichnis ...\vdrtools, der aber laut Handbuch im Zipfile kein DivX streamen kann).
+
 
 +
==Streaming mittels MPlayer==
 +
'''Linux'''
  
===Linux===
 
 
Eventuell muss unter Linux noch die Option -vo /dev/...  
 
Eventuell muss unter Linux noch die Option -vo /dev/...  
 
zur Angabe des Geräts für Video-Output ergänzt werden (vgl. mplayer --help).
 
zur Angabe des Geräts für Video-Output ergänzt werden (vgl. mplayer --help).
  
===Windows===
+
'''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. [http://www.vdr-portal.de/board/thread.php?threadid=22908&sid=&hilight=streaming]).
+
  
===MacOSX===
+
Anscheinend funktioniert das Streaming mit dem mplayer bislang unter Windows nur ansatzweise und scheint extrem davon abzuhängen, wie Plugin, Player und Tools aufeinander abgestimmt sind (vgl. [http://www.vdr-portal.de/board/thread.php?threadid=22908]).
Wenn MPlayer nicht aus dem Programm heraus streamt gibt es noch die Moeglichkeit, ihn direkt aus dem Terminal zu starten. Ueber die Optionen ist es z.B. auch moeglich, auf einem vergleichsweise langsamen G3 ab ca. 500MHz Streams darzustellen (hierzu helfen Optionen wie: "-cache 8192 -framedrop", skaliert werden kann da Bild um 50% z.B. "-xy 0.5"). Es ist zu beachten, dass ggf. der etwas kryptische Pfad in die Resourcen des Programms angegeben werden muss. Das kann jedoch durch einen Symlink vereinfacht werden - je nach Version z.B. als Admin über
+
<pre>
+
sudo ln -s /Applications/Programm/MPlayer/MPlayer\ OS\ X\ 2.app/Contents/Resources/mplayer.app/Contents/MacOS/mplayer /usr/bin/mplayer
+
</pre>
+
  
Die Ausgabe erfolgt dann aus dem Terminal unter:
+
'''MacOSX'''
<pre>
+
mplayer http://192.168.1.200:3000/PS/1
+
</pre>
+
  
Eine Alternative v.a. für ältere Rechner stellt ein aktueller VideoLanClient (VLC) dar. Die Version 0.8.4 spielt bspw. bereits an einem G3 333MHz unter leichtem Ruckeln aber artefaktfrei ab - deutlich besser als mit einem aktuellen MPlayer.
+
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):
Im Netzwerkpfad muss für Fernsehsender der Program Stream (PS)abgefragt werden, für Radiosender der Elementary Stream (ES). Die URL in VLC lautet also für
+
Fernsehbilder:
+
<pre>
+
http://192.168.1.200:3000/PS/1
+
</pre>
+
Radio:
+
<pre>
+
http://192.168.1.200:3000/ES/56</pre>
+
  
== Streaming von Radiokanälen ==
 
{| border=0 cellpadding=2 cellspacing=0
 
|[[Bild:Itunes-stream-mtdaapd-playlist.png|thumb|none|DVB-Radio Playlist per mt-daapd]]
 
|[[Bild:Itunes-stream-xml-playlist.png|thumb|none|DVB-Radio Playlist lokal per XML]]
 
|}
 
 
 
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 verwendensonst tritt oft Knacken auf oder es bleibt ganz still.
 
 
In der URL kann man entweder direkt ein Programm über die Kanalnummer ansprechen (hier Kanal "45")
 
<pre>
 
http://192.168.1.100:3000/ES/45
 
</pre>
 
oder aber anhand einiger Werte aus der [[Syntax_der_channels.conf|channels.conf]] (Format: Quelle-NID-TID-SID):
 
 
<pre>
 
<pre>
http://192.168.1.100:3000/ES/C-1-1073-28214
+
sudo ln -s /Applications/Programm/MPlayer/MPlayer\ OS\ X\ 2.app/\
 +
Contents/Resources/mplayer.app/Contents/MacOS/mplayer /usr/bin/mplayer
 
</pre>
 
</pre>
  
Die Kanalnummer ändert sich gegebenenfalls, weswegen die sicherere aber weniger intuitive Variante die IDs aus der channels.conf sind. Um das etwas handlicher zu gestalten anbei zwei Skripte, die einem die Arbeit für alle Radiokanäle abnehmen und automatisch Playlisten aller Radiosender erstellen. Eine schnelle übersicht der jeweiligen Adressen aller Radiosender bringt im Terminal ein:
+
Anschließend kann man aus dem Terminal aufrufen:  
 
<pre>
 
<pre>
cat /etc/vdr/channels.conf | egrep '^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*' | sed 's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ http:\/\/TYPE_YOUR_IP_HERE:3000\/ES\/\3-\6-\7-\5 #\1/g'
+
mplayer http://192.168.1.200:3000/PS/1
 
</pre>
 
</pre>
  
Leider werden Sendernamen mit Umlauten bislang nicht korrekt dargestellt.
+
==Streaming mittels VLC==
===Programme für Audio-Streams===
+
Eine Alternative v.a. für ältere Rechner stellt ein aktueller VideoLanClient (VLC) dar. Die Version 0.8.4 spielt beispielsweise bereits an einem Macintosh G3 333MHz unter leichtem Ruckeln ab - deutlich besser als mit einem aktuellen MPlayer.
*VLC (getestet unter MacOSX)
+
VLC ist am Macintosh für ältere Rechner empfehlenswert, es gibt aber auch Einschränkungen: [http://www.vdrportal.de/board/thread.php?threadid=28266]
*MPlayer (getestet unter MacOSX)
+
*iTunes (getestet unter MacOSX)
+
*RealPlayer (getestet unter MacOSX)
+
  
ggf. ist eine Aktualisierung erforderlich da das Streamen von Audiodaten mit alten Versionen nicht sauber lief
+
===Mac OSX (Intel)===
 +
Zumindest ab Version 0.8.5 funktioniert VLC recht gut auf einem Intel Mac ! Für ARD Sender PES, der Rest PS und Radio ES.
  
===Streamen zu iTunes über mt-daapd-Server===
+
===Linux===
MT-Daapd, der Linux-iTunes-Server, akzeptiert auch URLs von MPEG-Streams als Tracks. Hierzu wird für jeden Sender eine eigene Datei mit der Endung ".url" benutzt, in der sich v.a. die URL des Streams befindet (Einzelheiten auf der Entwicklerseite, s.u.).
+
Damit VLC 0.8.6 unter Linux überhaupt etwas anzeigt, muss man PS oder PES einstellen, mit TS arbeitet der VLC nicht zusammen und zeigt nichts, nicht mal eine Fehlermeldung an, sondern empfängt die Daten nur und schmeißt sie weg.
Die Bitrate (erste Bereich vor dem Komma) kann man weglassen, dann sieht so eine Datei in etwa so aus:
+
{{Box Datei|swr2.url|
+
<pre>
+
,SWR2, http://192.168.1.190:3000/ES/C-1-1073-28214
+
</pre>
+
}}
+
Das folgende Skript erstellt automatisch aus der vorhandenen channels.conf die *.url-Dateien für den mt-daap Server - damit ist das iTunes Streamen von jedem Rechner im Netz möglich. Allerdings hat dies bisher nur mit iTunes >4 geklappt, wobei man berücksichtigen sollte, dass mt-daapd 0.2.1 noch inkompatibel zu iTunes5 ist - das wurde endgültig mit mt-daapd 0.2.3 behoben.
+
  
Es werden in dem angegebenen Verzeichnis Dateien 1.url, 2.url usw. erzeugt - in iTunes selbst erscheinen aber die Sendernamen.
+
Um relativ einfach zwischen den Kanälen umzuschalten, kann man mit createXSPFplaylist.pl[https://www.tuxevara.de/2007/08/xspf-playlist-aus-vdrs-channels-conf/] eine XSPF[http://www.xspf.org] konforme Playlist erstellen, welche als Wiedergabeliste für VLC gelten kann.
  
{{Box Datei|build_mtdaap_radio.pl|
+
Dazu mit
 
<pre>
 
<pre>
#!/usr/bin/perl -w
+
createXSPFplaylist.pl -d <vdrhost> -p <port> > playlist.xspf
use strict;
+
</pre>
 +
die Playlist erstellen und anschließend VLC starten, z.B. mit vlc --open playlist.xspf
  
# ------------------------------------------------
+
= Streaming von Radiokanälen =
# initial vars: configure here !
+
# ------------------------------------------------
+
my $channels="/etc/vdr/channels.conf";
+
my $baseurl="192.168.1.100";
+
my $port="3000";
+
my $musicbaseurl="/musik/radiochannels";    # DIRECTORY MUST ALREADY EXIST!
+
  
 +
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:
# ------------------------------------------------
+
# no need to configure below (hope so...)
+
# ------------------------------------------------
+
my $stationnr=0;
+
my $shellcommand='';
+
my $shelloutput='';
+
my @radiostation=();
+
my @output_row=();
+
 
+
$shellcommand ='cat '.$channels.' | ';
+
$shellcommand .= 'egrep \'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*\' |';
+
$shellcommand .= 'sed \'s/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ http:\/\/'.$
+
baseurl.':'.$port.'\/ES\/\3-\6-\7-\5 #\1/g\' ';
+
$shelloutput=`$shellcommand`;
+
printf $shellcommand;
+
if ($shelloutput) {
+
        @output_row=split ( /\n/, $shelloutput);
+
        foreach (@output_row) {
+
                $stationnr++;
+
                @radiostation=split ( /#/, $_);
+
                open(DATEI, ">".$musicbaseurl."/".$stationnr.".url") || die "Datei nicht gefunden";
+
                print DATEI ','.$radiostation[1].','.$radiostation[0];
+
                close(DATEI);
+
        }
+
}
+
</pre>
+
}}
+
 
+
Es muss jetzt nur noch in der mt-daapd.conf ".url" als gültige Dateierweiterung eingetragen werden und - so gewünscht - in die Smartplaylist alle DVB-Radiosender eingefügt werden (in der mt-daapd.playlist):
+
 
<pre>
 
<pre>
"Streaming Audio" {
+
cat /etc/vdr/channels.conf | egrep \
          type includes "URL"
+
'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*' | sed \
}
+
's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ \
 +
http:\/\/192.168.1.200:3000\/ES\/\3-\6-\7-\5 #\1/g'
 
</pre>
 
</pre>
  
 +
==Programme für Audio-Streams==
 +
Die Programme, die Videostreams wiedergeben können, können im allgemeinen auch Audio-Streams wiedergeben.
 +
Dazu gehören:
 +
* VLC
 +
* MPlayer
 +
* RealPlayer
 +
* Über einen [[Streamen_mit_mt-daapd-Server|mt-daap-Server]] (MacOSX)
 +
* Per Playliste und [[Streamen_mit_iTunes|iTunes]] (MacOSX)
 +
* xmms (getestet mit V 1.2.10 unter Linux)
  
===Erstellen einer iTunes Playlist mit den VDR-Radiokanälen===
+
= Streaming von Aufzeichnungen =
 +
Neben den Streamen von Aufnahmen mittels [[Streamdev-plugin]] besteht die Möglichkeit des Zugriffs mittels Netzwerkfreigaben.
 +
Dies kann über eine [[samba|Samba-Freigabe]] oder eine [[NFS|NFS-Freigabe]] erfolgen.
  
Wer keinen mt-daap-Server laufen hat, aber trotzdem von allen Clients im Netz per iTunes auf DVB-Radio zugreifen will, der kann sich auch eine statische Playlist mit der URL bauen. Das funktioniert auch schon mit iTunes4.
+
Da der VDR die Aufnahmen in mehrere Dateien aufteilen kann, sollten diese Dateien für die Wiedergabe per Netzwerkfreigaben zusammengefasst werden, damit die Wiedergabe nicht für jede Datei separat gestartet werden muss. Dies kann mittels einer Kopieraktion oder [[Vdrnfofs]] erfolgen.
  
Mit diesem Skript wird eine iTunes-kompatible XML-Playlist erstellt, die nur noch in iTunes importiert werden muss:
+
== Unter Linux ==
{{Box Datei|build_itunes_dvb_playlist.pl|
+
Neben dem Zugriff per Videoplayer auf die Netzwerkfreigabe, kann auf dem zweiten Rechner mit Linux als Wiedergabeprogramm [[VDR]] verwendet werden. Eine eigene DVB-Karte ist für diesem Client nicht notwendig. Siehe dazu auch weiter unten im Abschnitt [[Streaming#Streaming_von_Fernsehen_und_Aufzeichnungen|Streaming von Fernsehen und Aufzeichnungen]]
<pre>
+
#!/usr/bin/perl -w
+
use strict;
+
  
# ------------------------------------------------
+
Für geringe Bandbreiten gibt es zudem eine [https://github.com/jjYBdx4IL/VDR-Streamer Lösung basierend auf einem Perl-Server], der ffmpeg zur ad-hoc Re-Kompression verwendet, und der zusammen mit (s)mplayer auf Client Seite auch ein Seeken im HTTP Stream erlaubt. Derzeit werden nur SD TV Streams mit .vdr Endung unterstützt.
# initial vars: configure here !
+
# ------------------------------------------------
+
my $channels="/etc/vdr/channels.conf";
+
my $baseurl="192.168.1.100";
+
my $port="3000";
+
my $playlistpath="/musik/";    # MUST ALREADY EXIST!
+
my $playlistfile="dvbstreams.xml";
+
my $playlistname="DVB Radio-Streams";
+
  
# ------------------------------------------------
+
== Unter OS X ==
# no need to configure below (hope so...)
+
Das Netzwerklaufwerk via SMB verbinden und den Ordner mit der Aufzeichnung auf das VLC-Icon ziehen. Die einzelnen Dateien der Aufnahme werden automatisch hintereinander abgespielt.
# ------------------------------------------------
+
my $stationnr=time();
+
my $shellcommand='';
+
my $shelloutput='';
+
my @radiostation=();
+
my @output_row=();
+
my $playlistheader='';
+
my $playliststation='';
+
my $playlistfooter='';
+
my $playlistsum='';
+
  
$shellcommand ='cat '.$channels.' | ';
+
== Unter Windows ==
$shellcommand .= 'egrep \'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*\' |';
+
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.
$shellcommand .= 'sed \'s/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/'.$baseu
+
rl.':'.$port.'\/ES\/\3-\6-\7-\5#\1/g\' ';
+
$shelloutput=`$shellcommand`;
+
open(DATEI, ">".$playlistpath."/".$playlistfile) || die "Datei nicht gefunden";
+
  
$playlistheader.='<?xml version="1.0" encoding="UTF-8"?>'."\n";
+
= Streaming von Fernsehen und Aufzeichnungen =
$playlistheader.='<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'."\n";
+
Für das Streaming von Fernsehsendungen und Aufzeichnungen in einer Umgebung stehen mehrere Möglichkeiten zur Verfügung.
$playlistheader.='<plist version="1.0">'."\n";
+
$playlistheader.='<dict>'."\n";
+
$playlistheader.='<key>Major Version</key><integer>1</integer>'."\n";
+
$playlistheader.='<key>Minor Version</key><integer>1</integer>'."\n";
+
$playlistheader.='<key>Application Version</key><string>4.7.1</string>'."\n";
+
$playlistheader.='<key>Music Folder</key><string></string>'."\n";
+
$playlistheader.='<key>Library Persistent ID</key><string></string>'."\n";
+
$playlistheader.='<key>Tracks</key>'."\n";
+
$playlistheader.='<dict>'."\n";
+
 
+
print DATEI $playlistheader;
+
if ($shelloutput) {
+
        @output_row=split ( /\n/, $shelloutput);
+
        foreach (@output_row) {
+
                $stationnr++;
+
                @radiostation=split ( /#/, $_);
+
                $playliststation.='<key>'.$stationnr.'</key>'."\n";
+
                $playliststation=' <dict>'."\n";
+
                $playliststation.='<key>Track ID</key><integer>'.$stationnr.'</integer>'."\n";
+
                $playliststation.='<key>Name</key><string>'.$radiostation[1].'</string>'."\n";
+
                $playliststation.='<key>Kind</key><string>MPEG-Audio-Stream</string>'."\n";
+
                $playliststation.='<key>Date Added</key><date>2005-09-24T15:02:16Z</date>'."\n";
+
                $playliststation.='<key>Bit Rate</key><integer>320</integer>'."\n";
+
                $playliststation.='<key>Sample Rate</key><integer>48000</integer>'."\n";
+
                $playliststation.='<key>Play Count</key><integer>4</integer>'."\n";
+
                $playliststation.='<key>Play Date</key><integer>-1084540920</integer>'."\n";
+
                $playliststation.='<key>Play Date UTC</key><date>2005-09-24T15:06:16Z</date>'."\n";
+
                $playliststation.='<key>Track Type</key><string>URL</string>'."\n";
+
                $playliststation.='<key>Location</key><string>'.$radiostation[0].'</string>'."\n";
+
                $playliststation.='</dict>'."\n";
+
                $playlistsum.='<dict>'."\n";
+
                $playlistsum.='<key>Track ID</key><integer>'.$stationnr.'</integer>'."\n";
+
                $playlistsum.='</dict>'."\n";
+
        print DATEI $playliststation;
+
        }
+
        $playlistfooter.= '</dict>'."\n";
+
        $playlistfooter.= '<key>Playlists</key>'."\n";
+
        $playlistfooter.= '<array>'."\n";
+
        $playlistfooter.= '<dict>'."\n";
+
        $playlistfooter.= '<key>Name</key><string>'.$playlistname.'</string>'."\n";
+
        $playlistfooter.= '<key>Playlist ID</key><integer>100258'.$stationnr.'</integer>'."\n";
+
        $playlistfooter.= '<key>Playlist Persistent ID</key><string>98E7F981487EBA3C</string>'."\n";
+
        $playlistfooter.= '<key>All Items</key><true/>'."\n";
+
        $playlistfooter.= '<key>Playlist Items</key>'."\n";
+
        $playlistfooter.= '<array>'."\n";
+
        $playlistfooter.= $playlistsum;
+
        $playlistfooter.= '</array>'."\n";
+
        $playlistfooter.= '</dict>'."\n";
+
        $playlistfooter.= '</array>'."\n";
+
        $playlistfooter.= '</dict>'."\n";
+
        $playlistfooter.= '</plist>'."\n";
+
        print DATEI $playlistfooter;
+
        close(DATEI);
+
}
+
</pre>
+
}}
+
 
+
===Links zu iTunes DVB-Stream===
+
{|
+
| [1]
+
| http://wiki.mt-daapd.org/wiki/Streaming_Audio
+
| mt-daapd Seite über MPG-Streaming
+
|-
+
| [2]
+
| http://www.vdr-portal.de/board/thread.php?postid=379755#post362530
+
| Diskussionsfaden hierzu im vdr-portal
+
|}
+
 
+
== Streaming von Aufzeichnungen ==
+
Anscheinend kann man über das streamdev-plugin keine Aufzeichnungen streamen, aber der Aufruf dürfte wegen des Pfades ohnehin ziemlich umständlich sein. Die einfachsten Lösungen beruhen daher auf Freigaben. Wenn man den Film als Ganzes ansehen möchte, legt man zuvor im entsprechenden Verzeichnis des VDR-Servers mit folgendem Befehl ganz einfach eine Gesamtdatei an:
+
 
+
<pre>
+
cat 001.vdr 002.vdr 003.vdr > all.vdr
+
</pre>
+
  
Ein klein wenig Geduld ist (je nach Rechner) allerdings erforderlich, denn es geht in der Regel um mehrere Gigabytes, die da zusammenkopiert werden müssen.
+
==Streamdev-client==
 +
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. Da der [[Streamdev-plugin#Streamdev-server|Streamdev-server]] keine Aufnahmen streamen kann [Anmerkung: die aktuelle Version im Repository hat inzwischen eine solche Funktion, siehe <host:port>/recordings.html], muss der Zugriff auf ein zentrales Aufnahmeverzeichnis über Netzwerkfreigaben erfolgen. Dabei ist [[NFS]] gegenüber [[Samba]] vorzuziehen, da der Durchsatz deutlich höher ist. Der Client kann das zentrale Aufnahmeverzeichnis entweder direkt als /video einhängen (mounten) oder als Unterverzeichnis.
  
=== Unter Linux ===
+
Eine DVB-Karte ist im Client nicht erforderlich. Das [[Streamdev-plugin#Streamdev-client|Streamdev-client Plugin]] fungiert als Eingabegerät. Als Ausgabegeräte können reine [[:Kategorie:Ausgabe-Plugins|Software-Lösungen]] zum Einsatz kommen. Als Hardware-Lösung bietet sich eine [[Dxr3|Dxr3-Karte]] oder eine [[Full-featured-DVB-Karte]] an, wobei von letzterer nur der Decoder-Teil benötigt wird.
Einfacher als der umständliche Aufruf des langen Pfades einer Aufzeichnung dürfte es sein, auf dem Linux-Client einen VDR als Client aufzusetzen und über diesen die Aufgabe zu erledigen (vgl. [[Streamdev-plugin#Streamdev-client | Streamdev-plugin]]). Ein schön illustriertes Beispiel hierfür gibt peter_weber69 auf seiner [http://mitglied.lycos.de/peterweber69/ VDR-Homepage] (vgl. auch weiter unten). Als Grundlage kann [[Kanotix - VDR Live CD]] verwendet werden. Selbstverständlich würde es auch eine [[NFS | NFS-Freigabe]] tun - nur hat obige Lösung den Vorteil, dass (fast?) die komplette Funktionalität des VDRs zu Verfügung steht.
+
  
=== Unter Windows ===
+
==Xine-Player==
Der einfachste Weg unter Windows geht über eine [[samba | Samba-Freigabe]]. Sodann bietet es sich an, die Extension <b>.vdr</b> dem MPlayer zuzuordnen - und schon genügt ein Doppelklick auf die Datei, um die Wiedergabe per MPlayer zu starten.  
+
Eine weitere einfache Lösung eines Streamclients stellt der [[Xine-Player]] dar.
  
Selbe Vorgehensweise für den [http://www.vdr-wiki.de/wiki/index.php/VDRMediaClient VDRMediaClient] (Windows).
+
==Streaming zur DBOX2 und Dreambox==
 +
Es ist ebenfalls möglich eine DBOX2 und Dreambox als Streamclient zu verwenden. Erreicht wird dies über das [[ffnetdev-plugin]] des VDR und einem [http://developer.berlios.de/projects/vdrviewer vdr-viewer]-Plugin für die DBOX2.
  
== Streaming von Fernsehen und Aufzeichnungen ==
+
==Streaming zur XBOX==
Zur klassischen VDR-to-VDR-Lösung mit dem [[Streamdev-plugin#Streamdev-client |  Streamdev-plugin]] gibt es eine interessante Alternative, bei der das [[Xine-plugin | Xine-plugin]] zum Einsatz kommt.  
+
Die XBOX kann ebenfalls für VDR-Aufzeichnungen und Live-TV dienen. Da es viele Möglichkeiten gibt, soll beispielhaft für eine einfache Konfiguration an dieser Stelle auf das weit verbreitete XBMC [http://xboxmediacenter.com] eingegangen werden. Es nutzt intern den Mplayer. Vorteilhaft ist die Bedienung über die originale Xbox-Fernbedienung.
{|
+
|[[Bild:VDR2Xine.jpg|thumb|left|Thanks to Peter Weber]]
+
|}
+
=== Konzeption ===
+
Diese Server-Client-Lösung basiert auf folgender Konzeption:
+
  
'''VDR-Server'''
+
===Voraussetzung===
* VDR
+
a) für TV: ein lauffähiger VDR mit Streamdev-Plugin und eine generierte Playlist aus der channels.conf ähnlich wie beim vlc (s.o.). Alternativ (wie im Forum zu finden) kann man sich auch per http auf den Port des Streaming-Servers verbinden z.B. http://meine-vdr-ip:3000/ und die Senderliste mit "Seite speichern unter" temporär lokal ablegen. Nun kann diese "quick`n dirty" als VDR-Playliste generiert werden durch einen upload auf jarmes.de [http://www.jarmes.de/Linux-VDR-Playlist.66.0.html]. Man erhält einen individuellen Playlist-File z.B. vdr_playlist.m3u
* xine-plugin
+
* xine-lib
+
  
'''Client'''
+
b) für Aufnahmen: ein lauffähiger Samba-Server für den Zugriff auf das /video Verzeichnis da XBMC kein nfs kennt.
* Xine-Player (= xine-lib + xine-ui)
+
  
=== Vor- und Nachteile ===
+
===Installation===
+ auf dem Client braucht kein VDR zu laufen; es genügt lediglich ein speziell gepatchter Xine-Player
+
XBMC auf der XBOX installieren. [http://xboxmediacenter.com/wiki/index.php?title=Install_XBMC] Kopieren der vdr_playlist.m3u nach ./XBMC/UserData/playlists/video, weil dort die Playlists für Videos abgelegt werden können für den TV-Einsatz.
  
+ auf dem Client steht die volle Funktionalität des VDRs zu Verfügung (inkl. [[OSD]])
+
===Konfiguration===
 +
Eventuell je nach Anzahl der vorhandenen Karten im VDR-Server muss gegebenenfalls das Streamdev-Plugin angepasst werden wegen der Umschaltproblematik bei z.B. nur einer TV-Karte (getestet mit: Pausierverhalten = immer, Pausieren der Clients = ja).
 +
Im XBMC auf der XBOX unter Videos muss eine neue Quelle hinzugefügt werden durch drücken der Title-Taste auf der Xbox-Fernbedienung. Hier wird nach einem Namen gefragt z.B. VDR-records und einem Pfad z.B. smb://meine-vdr-ip/video den man auch über die Fernbedienung suchen kann. Sinnvoll ist ebenfalls für das Abspielen unter Einstellung/Videos/Allgemein im XBMC die Option "Gestapelte Dateien als eine Datei behandeln" zu aktivieren.
  
- die Installation der Xine-Komponenten (xine-lib und xine-ui) ist wegen diverser Abhängigkeiten alles andere als trivial
+
===Bedienung===
 +
a) für TV: im XBMC einfach unter Videos/Playlists die kopierte Datei auswählen. Nun werden alle Programmnamen angezeigt. Programm auswählen und mit Select starten. Zappen kann man nun durch drücken der Display-Taste (Stream wird minimiert und Kanalliste eingeblendet) auf der Fernbedienung und wählen eines neuen Senders wieder per Select-Taste.
  
=== Installationsanleitung ===
+
b) für Aufnahmen: im XBMC einfach unter Videos/VDR-records den Remote-Zugriff starten durch select. Alle Aufnahmen werden entsprechend angezeigt. Hier z.B. 001.vdr wählen. Über das Drücken der Menü-Taste auf der Fernbedienung gelangt man zum On Screen Display (OSD) [http://xboxmediacenter.com/wiki/index.php?title=My_Videos#OSD_.28On_Screen_Display.29], wo man über die Videoeinstellungen das Deinterlacing aktivieren  kann z.B. Bob wie beim vlc und den Bild-Modus.
Eine detaillierte Anleitung, wie diese Streaming-Lösung erfolgreich installiert werden kann, findet sich [[Kanotix - Streaming-Server mit Xine-Plugin für Client mit Xine-Player|hier]] bzw. unter den Links.
+
  
==Links==
+
==Streaming der Livebildausgabe inklusive OSD-Darstellung==
  
* [[C't-VDR - Streaming-Server mit Budget-Karte (für Newbies)]]<br>
+
Mittels [[ffnetdev-plugin]] als Server kann seit VLC 0.9.x ({{wikipedia|VLC_media_player}}) das [[OSD]] über das Videobild überlagert dargestellt werden.
* [[Kanotix - Streaming-Server mit Xine-Plugin für Client mit Xine-Player]]
+
* [[Streaming Clients]]
+
  
 
[[Kategorie:Streaming]]
 
[[Kategorie:Streaming]]
[[Kategorie:Software]]
 

Aktuelle Version vom 18. Oktober 2016, 20:13 Uhr

Dieser Artikel befasst sich hauptsächlich mit dem Streamen von Audio oder Video von einem VDR zu einem anderen PC. Mit dem Streamen zu einem sogenannten Streaming Client, oft auch als UPnP-Media-Renderer bekannt, befaßt sich der Artikel Streaming Clients.

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

[Bearbeiten] Streaming von Fernsehkanälen

Meist wird die klassische Variante, unter Verwendung des Streamdev-plugin als Serveranwendung und mit einem der folgenden Programmen auf dem Client zur Anzeige benutzt:

[Bearbeiten] Software


Der Stream vom Streamdev-plugin kann

  • durch Angabe der Streaming-URL, z.B.
    mplayer http://192.168.0.200:3000/PES/3
  • durch das Webinterface von streamdev
  • Webinterfaces wie Vdradmin AM oder Xxv

abgerufen werden.

[Bearbeiten] 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, ES und Extern
  • 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'


Zum Streaming von Fernsehkanälen mit dem VDR kann auch das Vompserver-plugin mit VompClient verwendet werden.

[Bearbeiten] 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 mit dem mplayer bislang unter Windows nur ansatzweise und scheint extrem davon abzuhängen, wie Plugin, Player und Tools aufeinander abgestimmt sind (vgl. [1]).

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

[Bearbeiten] Streaming mittels VLC

Eine Alternative v.a. für ältere Rechner stellt ein aktueller VideoLanClient (VLC) dar. Die Version 0.8.4 spielt beispielsweise 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: [2]

[Bearbeiten] Mac OSX (Intel)

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

[Bearbeiten] Linux

Damit VLC 0.8.6 unter Linux überhaupt etwas anzeigt, muss man PS oder PES einstellen, mit TS arbeitet der VLC nicht zusammen und zeigt nichts, nicht mal eine Fehlermeldung an, sondern empfängt die Daten nur und schmeißt sie weg.

Um relativ einfach zwischen den Kanälen umzuschalten, kann man mit createXSPFplaylist.pl[3] eine XSPF[4] konforme Playlist erstellen, welche als Wiedergabeliste für VLC gelten kann.

Dazu mit

createXSPFplaylist.pl -d <vdrhost> -p <port> > playlist.xspf 

die Playlist erstellen und anschließend VLC starten, z.B. mit vlc --open playlist.xspf

[Bearbeiten] 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' 

[Bearbeiten] Programme für Audio-Streams

Die Programme, die Videostreams wiedergeben können, können im allgemeinen auch Audio-Streams wiedergeben. Dazu gehören:

  • VLC
  • MPlayer
  • RealPlayer
  • Über einen mt-daap-Server (MacOSX)
  • Per Playliste und iTunes (MacOSX)
  • xmms (getestet mit V 1.2.10 unter Linux)

[Bearbeiten] Streaming von Aufzeichnungen

Neben den Streamen von Aufnahmen mittels Streamdev-plugin besteht die Möglichkeit des Zugriffs mittels Netzwerkfreigaben. Dies kann über eine Samba-Freigabe oder eine NFS-Freigabe erfolgen.

Da der VDR die Aufnahmen in mehrere Dateien aufteilen kann, sollten diese Dateien für die Wiedergabe per Netzwerkfreigaben zusammengefasst werden, damit die Wiedergabe nicht für jede Datei separat gestartet werden muss. Dies kann mittels einer Kopieraktion oder Vdrnfofs erfolgen.

[Bearbeiten] Unter Linux

Neben dem Zugriff per Videoplayer auf die Netzwerkfreigabe, kann auf dem zweiten Rechner mit Linux als Wiedergabeprogramm VDR verwendet werden. Eine eigene DVB-Karte ist für diesem Client nicht notwendig. Siehe dazu auch weiter unten im Abschnitt Streaming von Fernsehen und Aufzeichnungen

Für geringe Bandbreiten gibt es zudem eine Lösung basierend auf einem Perl-Server, der ffmpeg zur ad-hoc Re-Kompression verwendet, und der zusammen mit (s)mplayer auf Client Seite auch ein Seeken im HTTP Stream erlaubt. Derzeit werden nur SD TV Streams mit .vdr Endung unterstützt.

[Bearbeiten] Unter OS X

Das Netzwerklaufwerk via SMB verbinden und den Ordner mit der Aufzeichnung auf das VLC-Icon ziehen. Die einzelnen Dateien der Aufnahme werden automatisch hintereinander abgespielt.

[Bearbeiten] 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.

[Bearbeiten] Streaming von Fernsehen und Aufzeichnungen

Für das Streaming von Fernsehsendungen und Aufzeichnungen in einer Umgebung stehen mehrere Möglichkeiten zur Verfügung.

[Bearbeiten] Streamdev-client

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. Da der Streamdev-server keine Aufnahmen streamen kann [Anmerkung: die aktuelle Version im Repository hat inzwischen eine solche Funktion, siehe <host:port>/recordings.html], muss der Zugriff auf ein zentrales Aufnahmeverzeichnis über Netzwerkfreigaben erfolgen. Dabei ist NFS gegenüber Samba vorzuziehen, da der Durchsatz deutlich höher ist. Der Client kann das zentrale Aufnahmeverzeichnis entweder direkt als /video einhängen (mounten) oder als Unterverzeichnis.

Eine DVB-Karte ist im Client nicht erforderlich. Das Streamdev-client Plugin fungiert als Eingabegerät. Als Ausgabegeräte können reine Software-Lösungen zum Einsatz kommen. Als Hardware-Lösung bietet sich eine Dxr3-Karte oder eine Full-featured-DVB-Karte an, wobei von letzterer nur der Decoder-Teil benötigt wird.

[Bearbeiten] Xine-Player

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

[Bearbeiten] Streaming zur DBOX2 und Dreambox

Es ist ebenfalls möglich eine DBOX2 und Dreambox als Streamclient zu verwenden. Erreicht wird dies über das ffnetdev-plugin des VDR und einem vdr-viewer-Plugin für die DBOX2.

[Bearbeiten] Streaming zur XBOX

Die XBOX kann ebenfalls für VDR-Aufzeichnungen und Live-TV dienen. Da es viele Möglichkeiten gibt, soll beispielhaft für eine einfache Konfiguration an dieser Stelle auf das weit verbreitete XBMC [5] eingegangen werden. Es nutzt intern den Mplayer. Vorteilhaft ist die Bedienung über die originale Xbox-Fernbedienung.

[Bearbeiten] Voraussetzung

a) für TV: ein lauffähiger VDR mit Streamdev-Plugin und eine generierte Playlist aus der channels.conf ähnlich wie beim vlc (s.o.). Alternativ (wie im Forum zu finden) kann man sich auch per http auf den Port des Streaming-Servers verbinden z.B. http://meine-vdr-ip:3000/ und die Senderliste mit "Seite speichern unter" temporär lokal ablegen. Nun kann diese "quick`n dirty" als VDR-Playliste generiert werden durch einen upload auf jarmes.de [6]. Man erhält einen individuellen Playlist-File z.B. vdr_playlist.m3u

b) für Aufnahmen: ein lauffähiger Samba-Server für den Zugriff auf das /video Verzeichnis da XBMC kein nfs kennt.

[Bearbeiten] Installation

XBMC auf der XBOX installieren. [7] Kopieren der vdr_playlist.m3u nach ./XBMC/UserData/playlists/video, weil dort die Playlists für Videos abgelegt werden können für den TV-Einsatz.

[Bearbeiten] Konfiguration

Eventuell je nach Anzahl der vorhandenen Karten im VDR-Server muss gegebenenfalls das Streamdev-Plugin angepasst werden wegen der Umschaltproblematik bei z.B. nur einer TV-Karte (getestet mit: Pausierverhalten = immer, Pausieren der Clients = ja). Im XBMC auf der XBOX unter Videos muss eine neue Quelle hinzugefügt werden durch drücken der Title-Taste auf der Xbox-Fernbedienung. Hier wird nach einem Namen gefragt z.B. VDR-records und einem Pfad z.B. smb://meine-vdr-ip/video den man auch über die Fernbedienung suchen kann. Sinnvoll ist ebenfalls für das Abspielen unter Einstellung/Videos/Allgemein im XBMC die Option "Gestapelte Dateien als eine Datei behandeln" zu aktivieren.

[Bearbeiten] Bedienung

a) für TV: im XBMC einfach unter Videos/Playlists die kopierte Datei auswählen. Nun werden alle Programmnamen angezeigt. Programm auswählen und mit Select starten. Zappen kann man nun durch drücken der Display-Taste (Stream wird minimiert und Kanalliste eingeblendet) auf der Fernbedienung und wählen eines neuen Senders wieder per Select-Taste.

b) für Aufnahmen: im XBMC einfach unter Videos/VDR-records den Remote-Zugriff starten durch select. Alle Aufnahmen werden entsprechend angezeigt. Hier z.B. 001.vdr wählen. Über das Drücken der Menü-Taste auf der Fernbedienung gelangt man zum On Screen Display (OSD) [8], wo man über die Videoeinstellungen das Deinterlacing aktivieren kann z.B. Bob wie beim vlc und den Bild-Modus.

[Bearbeiten] Streaming der Livebildausgabe inklusive OSD-Darstellung

Mittels ffnetdev-plugin als Server kann seit VLC 0.9.x (VLC_media_player) das OSD über das Videobild überlagert dargestellt werden.