Streaming

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Streaming von Fernsehkanälen)
(Vereinfacht und Umstrukturiert)
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.  
+
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, ob 1), 2), 3)  oder 4) gewünscht sind, gibt es unterschiedliche Ansätze, um den Anforderungen gerecht zu werden:
+
Je nachdem, welches Profil gewünscht wird, gibt es unterschiedliche Ansätze, um den Anforderungen gerecht zu werden:
  
 
= Streaming von Fernsehkanälen =
 
= Streaming von Fernsehkanälen =
Zeile 56: Zeile 60:
 
<pre>
 
<pre>
 
VDRADRESS="192.168.0.200" && \
 
VDRADRESS="192.168.0.200" && \
CHANNELSCONF="/video/channels.conf" && \
+
CHANNELSCONF="/etc/vdr/channels.conf" && \
 
VDRPORT="3000" && STREAMTYP="PS" && \
 
VDRPORT="3000" && STREAMTYP="PS" && \
 
cat $CHANNELSCONF | sed \
 
cat $CHANNELSCONF | sed \
Zeile 89: Zeile 93:
 
==Streaming mittels VLC==
 
==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.
 
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 [http://www.vdrportal.de/board/thread.php?threadid=28266&sid=]
+
VLC ist am Macintosh für ältere Rechner empfehlenswert, es gibt aber auch Einschränkungen :[http://www.vdrportal.de/board/thread.php?threadid=28266&sid=]
  
  
'''Streaming von Radiokanälen'''
+
= Streaming von Radiokanälen =
  
Bei Verwendung des VLC empfiehlt es sich für Fernsehsender als Datenkodierung - Program Stream ([[PS]]) und für Radiosender der Elementary Stream ([[ES]]) zu verwenden.  
+
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.
  
Video: http''://''192.168.1.200:3000/PS/S19.2E-1-1101-28106
+
Eine schnelle Übersicht der jeweiligen Adressen aller Radiosender bringt im Terminal ein:
 
+
Radio: http''://''192.168.1.200:3000/ES/S19.2E-1-1073-28216
+
 
+
== 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 verwenden, sonst 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 [[channels.conf]] (Format: Quelle-NID-TID-SID):
+
<pre>
+
http://192.168.1.100:3000/ES/C-1-1073-28214
+
</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:
+
 
<pre>
 
<pre>
 
cat /etc/vdr/channels.conf | egrep \
 
cat /etc/vdr/channels.conf | egrep \
 
'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*' | sed \
 
'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*' | sed \
 
's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ \
 
's/^\([^\;]*\)[^:]*\:\([^:]*\:[^:]*\)\:\([^:]*\)\:\([^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:\)\([^:]*\)\:\([^:]*\)\:\([^:]*\)\:\(.*\)$/ \
http:\/\/192.168.1.100:3000\/ES\/\3-\6-\7-\5 #\1/g'  
+
http:\/\/192.168.1.200:3000\/ES\/\3-\6-\7-\5 #\1/g'  
 
</pre>
 
</pre>
  
Leider werden Sendernamen mit Umlauten bislang nicht korrekt dargestellt.
+
==Programme für Audio-Streams==
===Programme für Audio-Streams===
+
Die Programme die Videostream wiedergeben können, können im allgemeine aus die Audio-Streams wiedergeben,
*VLC (getestet unter MacOSX)
+
dazu gehören :
*MPlayer (getestet unter MacOSX)
+
* VLC
*iTunes (getestet unter MacOSX)
+
* MPlayer
*RealPlayer (getestet unter MacOSX)
+
* RealPlayer
 +
* Über einen [[Streamen_mit_mt-daapd-Server|mt-daap-Server]] (MacOSX)
 +
* Per Playliste und [[Streamen_mit_iTunes|iTunes]] (MacOSX)
 +
  
Mit alten Versionen lief das Streaming oft nicht sauber. In solchen Fällen empfiehlt sich eine Aktualisierung.
+
= Streaming von Aufzeichnungen =
 +
Man kann über den HTTP Server des streamdev-plugin keine Aufzeichnungen streamen, aber der Aufruf dürfte wegen des langen Dateiname ohnehin ziemlich umständlich sein. Die einfachsten Lösungen beruhen daher auf Netzwerkfreigaben.
 +
Dies kann über eine [[samba|Samba-Freigabe]] oder eine [[NFS|NFS-Freigabe]] erfolgen.
  
===Streamen zu iTunes über mt-daapd-Server===
+
Da der VDR die Aufnahmen in mehrere Dateien anlegt, könnte man vor der Wiedergabe diese Dateien zu einzelen Datei zusammenfassen. Damit die Wiedergabe nicht für jede Datei seperate gestarten werden muss. Diese Kopieraktion dauert aber eine paar Minuten, da in der Regel mehrere GB Dateien kopiert werden müssen.
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 die URL des Streams befindet (Einzelheiten auf der Entwicklerseite, s.u.).
+
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 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.
 
 
{{Box Datei|build_mtdaap_radio.pl|
 
 
<pre>
 
<pre>
#!/usr/bin/perl -w
+
cat 0*.vdr > all.vdr
use strict;
+
 
+
# ------------------------------------------------
+
# 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!
+
 
+
 
+
# ------------------------------------------------
+
# no need to configure below (hope so...)
+
# ------------------------------------------------
+
my $stationnr=0;
+
my $shellcommand='';
+
my $shelloutput='';
+
my @radiostation=();
+
my @output_row=();
+
my $dateiname='';
+
$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 ( /#/,$_);
+
                $dateiname=$radiostation[1];
+
                $dateiname=~s/\ /\_/g;
+
                $dateiname=~s/[^\w]//g;
+
                open(DATEI, ">".$musicbaseurl."/".$dateiname.".url") || die "Datei nicht gefunden";
+
                print DATEI ','.$radiostation[1].','.$radiostation[0];
+
                close(DATEI);
+
        }
+
}
+
 
+
 
</pre>
 
</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):
+
== Unter Linux ==
<pre>
+
Als Alternative zum Zugriff über eine Netzwerkfreigaben und auch einfacher als der umständliche Aufruf einer Programmes mit dem langen Pfades einer Aufzeichnung dürfte es sein, auf dem [[Streamdev-plugin#Streamdev-client|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#Streaming_von_Fernsehen_und_Aufzeichnungen|Streaming von Fernsehen und Aufzeichnungen|]]
"Streaming Audio" {
+
          type includes "URL"
+
}
+
</pre>
+
  
===Erstellen einer iTunes Playlist mit den VDR-Radiokanälen===
+
== Unter Windows ==
 +
Der einfachste Weg unter Windows geht über eine Netzwerkfreigaben 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.
  
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.
+
= Streaming von Fernsehen und Aufzeichnungen =
 +
Für das Streaming von Fernsehen und Aufzeichnungen in einer Umgebung stehen mehrere Möglichkeiten zur Verfügung.
 +
Mit dem [[Streamdev-plugin#Streamdev-client|Streamdev-plugin]] ist eine klassischen 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 VDR benötigt eine DVB-Karte zur Ausgabe.  
  
Mit diesem Skript wird eine iTunes-kompatible XML-Playlist erstellt, die nur noch in iTunes importiert werden muss:
+
Mittels des Einsatz des [[Streamdev-plugin#Streamdev-client|Streamdev-plugin]] und des [[Xine-plugin]] als Ausgabegerät kann auch ein VDR als Streamclient aufgesetzt werden, der auf Linuxsysteme lauffähig ist, auf dem keine DVB-Karte installiert ist.
{{Box Datei|build_itunes_dvb_playlist.pl|
+
<pre>
+
#!/usr/bin/perl -w
+
use strict;
+
  
# ------------------------------------------------
+
Eine weitere einfache Lösung eines Streamclient stellt der [[Xine-Player]] dar.
# 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";
+
  
# ------------------------------------------------
+
=Streaming zur DBOX2 und Dreambox=
# no need to configure below (hope so...)
+
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
# ------------------------------------------------
+
my $stationnr=time();
+
my $shellcommand='';
+
my $shelloutput='';
+
my @radiostation=();
+
my @output_row=();
+
my $playlistheader='';
+
my $playliststation='';
+
my $playlistfooter='';
+
my $playlistsum='';
+
  
$shellcommand ='cat '.$channels.' | ';
 
$shellcommand .= 'egrep \'^[^:]*\:[^:]*\:[^:]*\:[^:]*\:[^:]*\:0.*\' |';
 
$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";
+
=Links=
$playlistheader.='<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'."\n";
+
$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;
+
* [[C't-VDR - Streaming-Server mit Budget-Karte (für Newbies)]]
if ($shelloutput) {
+
* [[Streaming Clients]]
        @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.
 
 
=== Unter Linux ===
 
Einfacher als der umständliche Aufruf des langen Pfades einer Aufzeichnung dürfte es sein, auf dem Linux-Client einen VDR als Client aufzusetzen (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 ===
 
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.
 
 
Selbe Vorgehensweise für den [http://www.vdr-wiki.de/wiki/index.php/VDRMediaClient VDRMediaClient] (Windows).
 
 
== Streaming von Fernsehen und Aufzeichnungen ==
 
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. 
 
{|
 
|[[Bild:VDR2Xine.jpg|thumb|left|Thanks to Peter Weber]]
 
|}
 
=== Konzeption ===
 
Diese Server-Client-Lösung basiert auf folgender Konzeption:
 
 
'''VDR-Server'''
 
* VDR
 
* xine-plugin
 
* xine-lib
 
 
'''Client'''
 
* Xine-Player (= xine-lib + xine-ui)
 
 
=== Vor- und Nachteile ===
 
+ auf dem Client braucht kein VDR zu laufen; es genügt lediglich ein speziell gepatchter Xine-Player
 
 
+ auf dem Client steht die volle Funktionalität des VDRs zu Verfügung (inkl. [[OSD]])
 
 
- die Installation der Xine-Komponenten (xine-lib und xine-ui) ist wegen diverser Abhängigkeiten alles andere als trivial
 
 
=== Installationsanleitung ===
 
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.
 
 
==Streaming zur DBOX2 und Dreambox==
 
ist ebenfalls möglich über das, in Entwicklung befindliche ffnetdev-plugin des VDR
 
und einem vdr(-viewer) -Plugin für die DBOX2
 
 
http://www.vdr-wiki.de/wiki/index.php/Ffnetdev-plugin
 
 
==Links==
 
 
* [[C't-VDR - Streaming-Server mit Budget-Karte (für Newbies)]]<br>
 
* [[Kanotix - Streaming-Server mit Xine-Plugin für Client mit Xine-Player]]
 
* [[Streaming Clients]]
 
  
 
[[Kategorie:Streaming]]
 
[[Kategorie:Streaming]]
 
[[Kategorie:Software]]
 
[[Kategorie:Software]]

Version vom 26. Februar 2006, 12:54 Uhr

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)
  • Streamingcontrol, benötigt zusätzlich MPlayer (Windows)

Das Streamdev-plugin kann entweder direkt über ein der obrigen Programme angesprochen werden oder aber indirekt über Webinterfaces wie Vdradmin, 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 jedes einzelne 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 an gibt 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 eigene 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]


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 allgemeine aus 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 Dateiname 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 einzelen Datei zusammenfassen. Damit die Wiedergabe nicht für jede Datei seperate gestarten 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 Netzwerkfreigaben und auch einfacher als der umständliche Aufruf einer Programmes mit dem langen Pfades 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 Netzwerkfreigaben 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 Fernsehen und Aufzeichnungen in einer Umgebung stehen mehrere Möglichkeiten zur Verfügung. Mit dem Streamdev-plugin ist eine klassischen 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 VDR benötigt eine DVB-Karte zur Ausgabe.

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

Eine weitere einfache Lösung eines Streamclient 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


Links