Streamdev-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Befehle)
K (Update link for streamdev project page and download link for the most recent stable version)
 
(10 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 9: Zeile 9:
 
==Bilder==
 
==Bilder==
 
[[Bild:streamdev-plugin.jpg|thumb|none|''Einstellungen'']]
 
[[Bild:streamdev-plugin.jpg|thumb|none|''Einstellungen'']]
 
<!-- ==Bedienung== -->
 
<!-- ===[[SVDRP]] Befehle=== -->
 
<!-- ==Hardwareanforderungen== -->
 
<!-- ==Softwareanforderungen== -->
 
<!-- ==Installation== -->
 
<!-- ===Optionen=== -->
 
<!-- ===Patches=== -->
 
  
 
==Installation==
 
==Installation==
 
+
Beim Kompilieren werden zwei Plugins erzeugt, streamdev-client und streamdev-server.
{{Box Hinweis| Beim Kompilieren werden zwei Plugins erzeugt, streamdev-client und streamdev-server.}}
+
  
 
===Konfiguration===
 
===Konfiguration===
Zeile 26: Zeile 17:
 
  cp [[Struktur|$SOURCEDIR]]/VDR/PLUGINS/src/streamdev/streamdevhosts.conf.example [[Struktur|$VDRCONFIG]]/plugins/[[streamdevhosts.conf]]
 
  cp [[Struktur|$SOURCEDIR]]/VDR/PLUGINS/src/streamdev/streamdevhosts.conf.example [[Struktur|$VDRCONFIG]]/plugins/[[streamdevhosts.conf]]
  
{{Box Hinweis|Die streamdevhosts.conf muss korrekt konfiguriert werden. Andernfalls erlaubt das Server Plugin kein [[Streaming]] zu den Clients!}}
+
Die streamdevhosts.conf muss korrekt konfiguriert werden. Andernfalls erlaubt das Server Plugin kein [[Streaming]] zu den Clients!
  
 
====Konfiguration Client Plugin====
 
====Konfiguration Client Plugin====
Zeile 35: Zeile 26:
 
Die Streamdev-Client Einstellungen in VDRs setup.conf:
 
Die Streamdev-Client Einstellungen in VDRs setup.conf:
 
  streamdev-client.StreamFilters = 1
 
  streamdev-client.StreamFilters = 1
  streamdev-client.SyncEPG = 0
+
  # streamdev-client.SyncEPG = 0
 
  streamdev-client.RemoteIp = 192.168.0.50
 
  streamdev-client.RemoteIp = 192.168.0.50
 
  streamdev-client.RemotePort = 2004
 
  streamdev-client.RemotePort = 2004
Zeile 45: Zeile 36:
  
 
*EPG synchronisieren (streamdev-client.SyncEPG):
 
*EPG synchronisieren (streamdev-client.SyncEPG):
**Die EPG-Sync Funktion von streamdev und das [[Epgsync-plugin]] machen im großen und ganzen das selbe. Streamdev synchronisiert aber im Vordergrund. Der VDR bleibt komplett blockiert bis der EPG-Sync abgeschlossen ist. Je nachdem wie groß die EPG-Datei auf dem Server ist, kann das dauern. Sofern man trotz Filter Streaming nicht auf eine Synchronisation verzichten kann oder will, empfiehlt sich daher die Verwendung des [[Epgsync-plugin|Epgsync-plugins]].
+
** Diese Funktion wurde in Version 0.5.0 (2010) aus dem Plugin entfernt. Die folgende Beschreibung erlkärt, warum:
 +
** Die EPG-Sync Funktion von streamdev und das [[Epgsync-plugin]] machen im großen und ganzen das selbe. Streamdev synchronisiert aber im Vordergrund. Der VDR bleibt komplett blockiert bis der EPG-Sync abgeschlossen ist. Je nachdem wie groß die EPG-Datei auf dem Server ist, kann das dauern. Sofern man trotz Filter Streaming nicht auf eine Synchronisation verzichten kann oder will, empfiehlt sich daher die Verwendung des [[Epgsync-plugin|Epgsync-plugins]].
  
 
*IP-Adresse des Streaming-Servers (streamdev-client.RemoteIp)
 
*IP-Adresse des Streaming-Servers (streamdev-client.RemoteIp)
 
*VTP-Port auf dem Server (streamdev-client.RemotePort)
 
*VTP-Port auf dem Server (streamdev-client.RemotePort)
 
*streamdev-client.StartClient (streamdev-client.StartClient)
 
*streamdev-client.StartClient (streamdev-client.StartClient)
 
<!-- ===Parameter=== -->
 
  
 
==VTP Protokoll ==
 
==VTP Protokoll ==
Zeile 86: Zeile 76:
  
 
Bei der letzten Zeile wird anstelle des - nach dem Antwort Code ein Leerzeichen gesetzt.
 
Bei der letzten Zeile wird anstelle des - nach dem Antwort Code ein Leerzeichen gesetzt.
 
===SVDRP Befehle===
 
''' Dieser Abschnitt ist unvollständig, muss erweitert werden'''
 
{| class="prettytable"
 
|- class="hintergrundfarbe5"
 
! Befehl    ||  Verwendung
 
|-id="DELC"
 
|bgcolor=#efefef| DELC
 
|bgcolor=#efefef| <Nummer>
 
|-
 
|
 
| Löscht den Kanal.
 
|-id="DELR"
 
|bgcolor=#efefef| DELR
 
|bgcolor=#efefef| <Nummer>
 
|-
 
|
 
| Löscht die Aufnahme mit der angegebenen Nummer. Um die Aufnahmenummer zu erhalten muss vorher der [[Streamdev-plugin#LSTR|LSTR]] Befehl ausgeführt werden. Die Nummern ändern sich durch Löschen anderer Aufnahmen nicht. ACHTUNG: AUFNAHMEN WERDEN OHNE VORHERIGE NACHFRAGE GELÖSCHT!!
 
|-id="DELT"
 
|bgcolor=#efefef| DELT
 
|bgcolor=#efefef| <Nummer>
 
|-
 
|
 
| Löscht einen Timer.
 
|-id="LSTC"
 
|bgcolor=#efefef| LSTC
 
|bgcolor=#efefef| [ <Nummer> | <Name> ]
 
|-
 
|
 
| Ohne Parameter werden alle Kanäle aufgelistet. Wird eine Nummer angegeben, wird nur dieser Kanal aufgelistet, bei Angabe eines Namens alle Kanäle,  bei denen dieser im Namen auftaucht.
 
Zur Beschreibung des Formates siehe [[channels.conf]]
 
|-id="LSTE"
 
|bgcolor=#efefef| LSTE
 
|bgcolor=#efefef| [ <Kanal> ] [ now | next | at <Zeit> | from <Zeit> to <Zeit> ]
 
|-
 
|
 
| Ohne Parameter werden alle EPG-Daten ausgegeben. Wird ein Kanal angegeben (entweder mit Nummer, oder mit Kanal-ID), werden nur die EPG-Daten dieses Senders angezeigt. 'now, 'next' 'at <time>' 'from <Zeit> to <Zeit>' sind Filter. Das Format findet man in [[epg.data]].
 
|-id="LSTR"
 
|bgcolor=#efefef| LSTR
 
|bgcolor=#efefef| [ <Nummer> ]
 
|-
 
|
 
| Ohne Parameter werden alle Aufnahmen aufgelistet. Sonst wird die Zusammenfassung der angegebenen Aufnahme angezeigt.
 
Ein Eintrag der Auflistung aller Aufnahmen sieht beispielsweise so aus
 
250 2 08.03.07 20:00* Tagesschau
 
2 ist die Nummer der Aufnahme.
 
Danach folgt Datum und Uhrzeit der Aufnahme. Der Stern hinter der Uhrzeit zeigt an, dass die Aufnahme neu ist.
 
Als Letztes folgt der Titel der aufgenommenen Sendung.
 
 
Die Zusammenfassung einer Aufnahme hat das gleiche Format, wie ein EPG-Eintrag in [[epg.data]]. Für Details siehe [[Vdr%285%29]]
 
|-id="LSTT"
 
|bgcolor=#efefef| LSTT
 
|bgcolor=#efefef| [ <Nummer> ]
 
|-
 
|
 
| Ohne Parameter werden alle Timer (programmierte Aufnahmen) aufgelistet, Sonst nur der angegeben Timer.
 
|-id="MODC"
 
|bgcolor=#efefef| MODC
 
|bgcolor=#efefef| <Nummer> <Einstellungen>
 
|-
 
|
 
| Ändert die Kanaleinstellungen. Das Format von <Einstellungen> muss das gleiche sein wie das des [[Streamdev-plugin#LSTC|LSTC]] Befehls.
 
|-id="MODT"
 
|bgcolor=#efefef| MODT
 
|bgcolor=#efefef| <Nummer> on | off | <Einstellungen>
 
|-
 
|
 
| Ändert einen Timer. Das Format von <Einstellungen> muss das gleiche sein wie das des [[Streamdev-plugin#LSTT|LSTT]] Befehls. Mit 'on und 'off' kann ein Timer einfach ein- und ausgeschaltet werden.
 
|-id="MOVC"
 
|bgcolor=#efefef| MOVC
 
|bgcolor=#efefef| <Nummer> <nach>
 
|-
 
|
 
| Verschiebt einen Kanal nach <nach> in der Kanalliste.
 
|-id="MOVT"
 
|bgcolor=#efefef| MOVT
 
|bgcolor=#efefef| <Nummer> <nach>
 
|-
 
|
 
| Verschiebt einen Timer nach <nach> in der Timerliste.
 
|-id="NEWC"
 
|bgcolor=#efefef| NEWC
 
|bgcolor=#efefef| <Einstellungen>
 
|-
 
|
 
| Erstellt einen neuen Kanal. Das Format von <Einstellungen> muss das gleiche sein wie das des [[Streamdev-plugin#LSTC|LSTC]] Befehls.
 
|-id="NEWT"
 
|bgcolor=#efefef| NEWT
 
|bgcolor=#efefef| <Einstellungen>
 
|-
 
|
 
| Erstellt einen neuen Timer. Das Format von <Einstellungen> muss das gleiche sein wie das des [[Streamdev-plugin#LSTT|LSTT]] Befehls.
 
Beispiel für <Einstellungen>:
 
1:19:5:2010:2150:51:50:Das Gelbe vom Ei:
 
aktiv:Kanalnummer:Tag_des_Monats:Startzeit:Endzeit:Priorität:Dauerhaftigkeit:Titel:
 
Tag_des_Monats kann dabei folgende Formate haben:
 
19
 
2005-03-19
 
MTWTFSS
 
MTWTFSS@19
 
MTWTFSS@2005-03-19
 
|-id="NEXT"
 
|bgcolor=#efefef| NEXT
 
|bgcolor=#efefef| [ abs | rel ]
 
|-
 
|
 
| Zeigt den nächsten Timer an. Ohne Parameter geschieht die Ausgabe in lesbarer Form. Mit dem Parameter 'abs' wird die absolute Zeit in Sekunden angegeben, während beim Parameter 'rel' die Zeit von jetzt bis zur Aufnahme in Sekunden angeben wird. Wenn die mit 'abs' zurückgegeben Zeit in der Vergangenheit liegt, bzw. die mit 'rel' zurückgegebene Zeit negativ ist, findet die Aufnahme des Timers gerade statt. Der Erste Wert der ausgegeben wird stellt die Nummer des Timers dar.
 
|-id="STAT"
 
|bgcolor=#efefef| STAT
 
|bgcolor=#efefef| disk | name | version | channels | records | timers | charset | time
 
|-
 
|
 
| disk:      Liefert Informationen über den Festplattenspeicher-Verbrauch (Total, Frei, Prozent).
 
 
name:      Gibt den Softwarenamen zurück.
 
 
version:  Gibt die VDR und Streamdev Version.
 
 
channels:  Gibt die Anzahl der vorhandenen Kanäle aus.
 
 
records:  Gibt die Anzahl der vorhandenen Aufnahmen aus.
 
 
timers:    Gibt die Anzahl der vorhandenen Timer aus.
 
 
charset:  Liefert Informationen über die derzeitige verwendete Buchstabenart.
 
 
time:      Die auf dem Server aktuelle Zeit wird ausgegeben.
 
|-id="PROV"
 
|bgcolor=#efefef| PROV
 
|bgcolor=#efefef| <Priorität> <Kanal>
 
|-
 
|
 
| Mit diesem Kommando wird der Server gefragt ob der gegebene Kanal empfangen werden kann.
 
 
Priortät ist eine Nummer zwischen 0 und 100 (im Fall ein Medientyp kann nicht empfangen werden, bevorzugt der Server höhere Prioritäten gegenüber niedrigeren und kann auch Streams mit niedriger Priorität gegebenfalls schließen), oder wenn -1 wird nur gefragt ob der Medientyp verfügbar ist.
 
 
Kanal ist eine Textzeile welches den Kanal beschreibt. Es kann zum Beispiel der Kanalname oder die Kanalnummer sein.
 
|}
 
  
 
==Sonstiges==
 
==Sonstiges==
 
===Probleme===
 
===Probleme===
====Umschaltprobleme 1====
+
====Kanal nicht verfügbar/Umschaltproblem====
Möglicherweise gibt es mit dem Streamdev-Server ein Problem:
+
* Man kann immer nur den Kanal anschauen, welcher auch gerade auf dem VDR-Server eingestellt ist.
Man kann immer nur den Kanal anschauen welcher auch gerade auf dem VDR-Server eingestellt ist. Da viele dieses Problem haben, und ich hoffe dass jeder diese Stelle hier durchliest, hoffe ich, dass ich es vielen Leuten leichter mache.
+
* Lösung:
 +
** Im OSD:  OSD --> Einstellungen --> Plugins --> streamdev-server: Pausierverhalten "immer pausieren"
 +
** per [[setup.conf]] des VDR:  streamdev-server.AllowSuspend = 1 streamdev-server.SuspendMode = 1
  
Hintergrund: Dieses Problem tritt nur dann auf, wenn man nur eine DVB-Karte eingebaut oder mehrere Karten hat, diese aber alle mit Aufnahmen beschäftigt sind. Der VDR schaut auch immer einen Sender, auch wenn er nicht mal 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:
+
====Umschaltprobleme wegen Primary Limit====
 
+
* Einstellung "Primär-Limit" im Menü "Einstellungen -> Aufnahme" muss auf 0 stehen.
Lösung:
+
* Ist ein höherer Wert eingetragen und eine der DVB-Karten im Server wurde zum "Primary Device" ernannt, dann steht diese Karte Streamdev nicht zur Verfügung.
Im OSD folgen wir diesen Menüpunkten:
+
OSD --> Einstellungen --> Plugins --> streamdev-server<br>
+
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...
+
 
+
Sollte man kein OSD am VDR haben, kann man auch manuell die [[setup.conf]] vom VDR bearbeiten. VDR vor dem ändern stoppen!:
+
streamdev-server.AllowSuspend = 1
+
streamdev-server.SuspendMode = 1
+
 
+
===== Variante: nur wenige Kanäle sind verfügbar =====
+
Ursache und Lösung sind oben beschrieben. Das Fehlverhalten ist jedoch, dass zwei, drei Kanäle verfügbar sind und der Streamdev-Server für alle anderen Kanäle folgende Meldung liefert:
+
Server returned 409:Channel not available
+
 
+
====Umschaltprobleme 2====
+
Was wenn das Pausierverhalten schon auf "immer pausieren" steht, das Problem aber weiter besteht? Ursache könnte eine ältere CVS-Version des Streamdev-Servers sein. Dabei berücksichtigt der Server nicht, dass die aktuell vom Streamdev-client genutzte DVB-Karte ja eigentlich umgeschaltet werden darf (sofern nicht noch anderweitig in Verwendung).
+
 
+
Ein eindeutiger Indikator für dieses Problem: Das Umschalten über direkte Eingabe einer Kanalnummer funktioniert, mit Kanal+/- hingegen wird immer nur zwischen den Kanälen der gerade aktiven Transponder gewechselt.
+
 
+
Lösung: Aktuelles Streamdev aus dem CVS holen oder den im Bug-Tracking hinterlegten Patch verwenden.
+
 
+
* [http://www.vdr-developer.org/mantisbt/view.php?id=28 Eintrag im Bug-Tracking]
+
 
+
====Umschaltprobleme 3====
+
Schwierigkeiten kann auch die Einstellung "Primär-Limit" aus dem Menü "Einstellungen -> Aufnahme" bereiten. Dieser Parameter muss auf 0 stehen. Ist ein höherer Wert eingetragen und eine der DVB-Karten im Server wurde zum "Primary Device" ernannt, dann steht diese Karte Streamdev nicht zur Verfügung.
+
  
 
====Sprachdateien werden nicht erkannt (VDR>=1.5.7)====
 
====Sprachdateien werden nicht erkannt (VDR>=1.5.7)====
Um die Menüs des Plugins auch in einer anderen Sprache als in Englisch anzuzeigen, ist der folgende Patch anzuwenden:
+
* Im Menüs des Plugins ist nur Englisch verfügbar
* {{vdrportal attachment|18059|vdr-streamdev-gettext.patch}}
+
* Abhilfe: {{vdrportal attachment|18059|vdr-streamdev-gettext.patch}}
  
 
====kein TS stream mit pvrinput möglich====
 
====kein TS stream mit pvrinput möglich====
Analoge pvrinput Kanäle können nicht mit dem streamdev Plugin im TS Format gestreamt werden, da das streamdev Plugin dafür einen Multiplexer mit Filtersupport im device voraussetzt. Den haben aber normalerweise nur DVB Karten, keine analogen Karten.
+
* Analoge pvrinput Kanäle können im TS Format gestreamt werden, da das streamdev Plugin dafür einen Multiplexer mit Filtersupport im device voraussetzt.
PES stream funktioniert jedoch, deswegen als stream Format bitte PES wählen.  
+
* Abhilfe: im pvrinput Plugin stream Format PES wählen.  
 
+
====Fehler im Plugin====
+
* http://projects.vdr-developer.org/projects/plg-streamdev/issues
+
  
 
===Tipps===
 
===Tipps===
Zeile 280: Zeile 108:
  
 
====Streamen über DSL====
 
====Streamen über DSL====
* Im DSL Router einstellen, dass aus dem Internet Anfragen an Port 3000 (TCP) an den streaming Server weitergeleitet werden, zusätzlich empfiehlt sich die Verwendung von [http://www.dyndns.com/services/dns/dyndns/ dyndns] oder ähnlichen Dynamic DNS Anbietern, damit man die IP des Routers nicht kennen muss
+
* Im DSL Router einstellen, dass aus dem Internet Anfragen an Port 3000 (TCP) an den streaming Server weitergeleitet werden,
* es muss eine Datei /root/externremux.sh angelegt werden
+
 
* der verwendete Client sollte die empfangenen Daten buffern: 2,5MByte genügen (je nach Verbindung und Bitrate)
 
* der verwendete Client sollte die empfangenen Daten buffern: 2,5MByte genügen (je nach Verbindung und Bitrate)
* ein Beispiel für /root/externremux.sh für T-DSL6000:
+
* Der Zugriff auf den Stream erfolgt dann über <nowiki>http://<HOST-Adresse>:3000/EXT/<Channel></nowiki>
{{Box Datei | /root/externremux.sh |
+
* Die Datei ist unter VDRCONF/plugins/streamdev-server/externremux.sh abzulegen - ein Beispielskript liegt den Sourcen des Plugins bei.  
<pre>
+
#!/bin/sh
+
IN=-
+
OUT=/tmp/out
+
rm -f $OUT.avi /tmp/out.log
+
/usr/bin/mkfifo $OUT.avi
+
cat $OUT.avi & /usr/local/bin/mencoder "$IN" -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=400 -oac mp3lame -lameopts cbr:preset=96:mode=0 -vf scale=576:324 -o $OUT.avi &>$OUT.log
+
</pre>
+
}}
+
* Der Zugriff auf den Stream erfolgt dann über <nowiki>http://<DynDNS-Name/Router-IP>:3000/Extern/<Channel></nowiki>
+
Bei neueren Versionen wird Extern abgekürzt mit EXT
+
* Der Zugriff auf den Stream erfolgt dann über <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT/<Channel></nowiki>
+
 
+
HINWEIS: Ab Version 0.5.0 wurde die Verwendung von externremux.sh verändert. Die Datei ist unter VDRCONF/plugins/streamdev-server/externremux.sh abzulegen - ein Beispielscript liegt den Sourcen des Plugins bei. Ältere Scripte sollten nach Möglichkeit nicht mehr verwendet werden.
+
  
Beispiele für das Streamen mit unterschiedlichen Einstellungen (ab Version 0.5.0):
+
Beispiele für das Streamen mit unterschiedlichen Einstellungen  
* <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT/1 (Kanal 1 mit Standardeinstellungen)</nowiki>
+
* <nowiki>http://<HOST-Adresse>:3000/EXT/1 (Kanal 1 mit Standardeinstellungen)</nowiki>
* <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT;QUALITY=WLAN11;VBR=512/1 (Optimiert für WLAN11, jedoch mit Videobitrate 512kBit/s statt der Standardeinstellung für WLAN11)</nowiki>
+
* <nowiki>http://<HOST-Adresse>:3000/EXT;QUALITY=WLAN11;VBR=512/1 (Optimiert für WLAN11, jedoch mit Videobitrate 512kBit/s statt der Standardeinstellung für WLAN11)</nowiki>
* <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT;VC=x264/1 (verwende x264 Codec) </nowiki>
+
* <nowiki>http://<HOST-Adresse>:3000/EXT;VC=x264/1 (verwende x264 Codec) </nowiki>
* <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT;QUALITY=DSL6000/1 (optimiert für DSL6000)</nowiki>
+
* <nowiki>http://<HOST-Adresse>:3000/EXT;QUALITY=DSL6000/1 (optimiert für DSL6000)</nowiki>
* <nowiki>http://<DynDNS-Name/Router-IP>:3000/EXT;VBR=250;ABR=16;WIDTH=128/1 (manuelle Vorgabe der Video/Audiobitrate und der Breite)</nowiki>
+
* <nowiki>http://<HOST-Adresse>:3000/EXT;VBR=250;ABR=16;WIDTH=128/1 (manuelle Vorgabe der Video/Audiobitrate und der Breite)</nowiki>
  
===Wunschliste===
+
===Bugs und Wünsche===
 
* http://projects.vdr-developer.org/projects/plg-streamdev/issues
 
* http://projects.vdr-developer.org/projects/plg-streamdev/issues
  
===Snapshot===
+
==Entwicklerversion==
 
  git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git
 
  git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git
  
==Aktuelle Version(en)==
+
==Aktuelle Version==
[http://projects.vdr-developer.org/attachments/download/969/vdr-streamdev-0.6.0.tgz 0.0.6]
+
[http://projects.vdr-developer.org/attachments/download/1580/vdr-streamdev-0.6.1.tgz 0.6.1]
  
 
==Links==
 
==Links==
# [http://streamdev.vdr-developer.org Homepage des Plugins]
+
# [http://projects.vdr-developer.org/projects/plg-streamdev Homepage des Plugins]
  
 
[[Kategorie:Plugins]]
 
[[Kategorie:Plugins]]
 
[[Kategorie:Empfänger-Plugins]]
 
[[Kategorie:Empfänger-Plugins]]
 +
[[Kategorie:Ausgabe-Plugins]]
 
[[Kategorie:Streaming]]
 
[[Kategorie:Streaming]]
 
{{i18n|streamdev-plugin}}
 
{{i18n|streamdev-plugin}}

Aktuelle Version vom 6. Oktober 2016, 10:25 Uhr

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

Das Streamdev Plugin erlaubt das Streamen von Live-TV des VDR zu Streaming Clients.

Streamdev besteht aus zwei Plugins, streamdev-server und streamdev-client. Damit ist auch VDR als Streaming Client nutzbar.

[Bearbeiten] Status

Letztes Update 05/2012

[Bearbeiten] Bilder

Einstellungen

[Bearbeiten] Installation

Beim Kompilieren werden zwei Plugins erzeugt, streamdev-client und streamdev-server.

[Bearbeiten] Konfiguration

Der Zugriff auf den Server wird durch die streamdevhosts.conf konfiguriert.

cp $SOURCEDIR/VDR/PLUGINS/src/streamdev/streamdevhosts.conf.example $VDRCONFIG/plugins/streamdevhosts.conf

Die streamdevhosts.conf muss korrekt konfiguriert werden. Andernfalls erlaubt das Server Plugin kein Streaming zu den Clients!

[Bearbeiten] Konfiguration Client Plugin

Danach muss man in der channels.conf des Clients die Programme hinzufügen, die vom Streaming-Server stammen und in Zukunft von dem 'virtuellen' DVB-Device empfangen werden sollen. Im einfachsten Fall genügt es, auf dem Client eine Kopie der channels.conf des Servers zu installieren. Empfangen Client und Server unterschiedliche Kanal-Quellen (z.B. Server: DVB-S, Client: DVB-T), so werden die Einträge aus der channels.conf des Servers einfach in die des Clients eingefügt.

Es müssen auch nicht alle Kanäle des Server in die channels.conf des Clients aufgenommen werden.

Die Streamdev-Client Einstellungen in VDRs setup.conf:

streamdev-client.StreamFilters = 1
# streamdev-client.SyncEPG = 0
streamdev-client.RemoteIp = 192.168.0.50
streamdev-client.RemotePort = 2004
streamdev-client.StartClient = 1


  • Filter Streaming (streamdev-client.StreamFilters):
    • Voraussetzung hierfür ist eine aktuelle streamdev-Version sowohl auf dem Client als auch auf dem Server (Mai 2007). Der Client wird mit allen relevanten Informationen versorgt, die der Server über die DVB-Karte empfängt (EPG, Kanal-Updates, ...).
  • EPG synchronisieren (streamdev-client.SyncEPG):
    • Diese Funktion wurde in Version 0.5.0 (2010) aus dem Plugin entfernt. Die folgende Beschreibung erlkärt, warum:
    • Die EPG-Sync Funktion von streamdev und das Epgsync-plugin machen im großen und ganzen das selbe. Streamdev synchronisiert aber im Vordergrund. Der VDR bleibt komplett blockiert bis der EPG-Sync abgeschlossen ist. Je nachdem wie groß die EPG-Datei auf dem Server ist, kann das dauern. Sofern man trotz Filter Streaming nicht auf eine Synchronisation verzichten kann oder will, empfiehlt sich daher die Verwendung des Epgsync-plugins.
  • IP-Adresse des Streaming-Servers (streamdev-client.RemoteIp)
  • VTP-Port auf dem Server (streamdev-client.RemotePort)
  • streamdev-client.StartClient (streamdev-client.StartClient)

[Bearbeiten] VTP Protokoll

[Bearbeiten] Einleitung

Dieses Protokoll wurde erstellt für Video Übertragungen über das Netzwerk und steht für Video Transfer Protocol. Es ist ein Text basierendes Protokoll wie z.B. FTP, und wird vom Klienten benutzt um mit einem Server zu kommunizieren welcher verschiedene Typen von Videodaten zur Verfügung stellt, wie z.B. Echtzeitübertragungen und Aufnahmen.

Die Grundkommunikation besteht aus kurzen Text Kommandos welche durch den Klient versendet werden und durch den Server in Form eines Nummerncodes und einer Klartextnachricht beantwortet werden. Alle Zeilen enden mit einem vollen CR/LF, was vorzugsweise als "\015\012" geschrieben wird, dies ist Plattformunabhängig. Dennoch sollte ein Klient oder (vor allem) der Server auch auf "\n" Endungen reagieren können. Die MPEG Daten werden über eine separate Datenverbindung übertragen.

Außerdem ist es möglich wie mit SVDRP, bedingt über das VTP Protokoll mittels svdrpsend.pl zu kommunizieren wenn der Port des Streamdev-Servers angegeben wird.

[Bearbeiten] VTP Antwort Codes

215   EPG Eintrag
220   Letztes Kommando ok / Verbindung bereit
221   Service schließt Sende-Kanal
250   Angeforderte Aktion okay, beendet
451   Angeforderte Aktion abgebrochen: lokaler Fehler bei der Bearbeitung
500   Syntax-Fehler, unbekannter Befehl
501   Syntax-Fehler in Parameter oder Argument
550   Angeforderte Aktion nicht ausgeführt
551   Angeforderte Aktion nicht ausgeführt, eine spätere Verbindung war nicht erfolgreich
554   Transaktion fehlgeschlagen
560   Live-Stream derzeit nicht verfügbar
561   Capability not known
562   Pid derzeit nicht verfügbar
563   Stream derzeit nicht verfügbar

Die Antworten sind vom Format:

<Antwort Code><-|Leerzeichen><Text><newline>

Bei der letzten Zeile wird anstelle des - nach dem Antwort Code ein Leerzeichen gesetzt.

[Bearbeiten] Sonstiges

[Bearbeiten] Probleme

[Bearbeiten] Kanal nicht verfügbar/Umschaltproblem

  • Man kann immer nur den Kanal anschauen, welcher auch gerade auf dem VDR-Server eingestellt ist.
  • Lösung:
    • Im OSD: OSD --> Einstellungen --> Plugins --> streamdev-server: Pausierverhalten "immer pausieren"
    • per setup.conf des VDR: streamdev-server.AllowSuspend = 1 streamdev-server.SuspendMode = 1

[Bearbeiten] Umschaltprobleme wegen Primary Limit

  • Einstellung "Primär-Limit" im Menü "Einstellungen -> Aufnahme" muss auf 0 stehen.
  • Ist ein höherer Wert eingetragen und eine der DVB-Karten im Server wurde zum "Primary Device" ernannt, dann steht diese Karte Streamdev nicht zur Verfügung.

[Bearbeiten] Sprachdateien werden nicht erkannt (VDR>=1.5.7)

[Bearbeiten] kein TS stream mit pvrinput möglich

  • Analoge pvrinput Kanäle können im TS Format gestreamt werden, da das streamdev Plugin dafür einen Multiplexer mit Filtersupport im device voraussetzt.
  • Abhilfe: im pvrinput Plugin stream Format PES wählen.

[Bearbeiten] Tipps

[Bearbeiten] Streamdev-client mit mehreren Verbindungen oder Servern

Von sich aus kann das streamdev-client-Plugin nur genau eine Verbindung zu genau einem festgelegten Server unterhalten. Mit einem einfachen Trick ist es aber möglich, auch mehrere Server zu kontaktieren oder von einem Server gleichzeitig mehrere Transponder zu empfangen. Letzteres ermöglicht es z.B. ein Programm auf dem Client aufzuzeichnen, während ein anderes angeschaut wird. Sogar das osdpip-plugin kann auf dem Client genutzt werden.

Um dies zu erreichen, muss einfach nur eine Kopie des streamdev-client-Plugins unter einem anderen Namen erstellt werden:

cp libvdr-streamdev-client.so.VERSION libvdr-streamdev-client2.so.VERSION

Beim Start des VDR beide Plugins laden

-Pstreamdev-client -Pstreamdev-client2

Im OSD-Menü unter Einstellungen --> Plugins sind nun zwei streamdev-client-Plugins verfügbar die unabhängig voneinander konfiguriert werden können.

[Bearbeiten] Streamen über DSL

  • Im DSL Router einstellen, dass aus dem Internet Anfragen an Port 3000 (TCP) an den streaming Server weitergeleitet werden,
  • der verwendete Client sollte die empfangenen Daten buffern: 2,5MByte genügen (je nach Verbindung und Bitrate)
  • Der Zugriff auf den Stream erfolgt dann über http://<HOST-Adresse>:3000/EXT/<Channel>
  • Die Datei ist unter VDRCONF/plugins/streamdev-server/externremux.sh abzulegen - ein Beispielskript liegt den Sourcen des Plugins bei.

Beispiele für das Streamen mit unterschiedlichen Einstellungen

  • http://<HOST-Adresse>:3000/EXT/1 (Kanal 1 mit Standardeinstellungen)
  • http://<HOST-Adresse>:3000/EXT;QUALITY=WLAN11;VBR=512/1 (Optimiert für WLAN11, jedoch mit Videobitrate 512kBit/s statt der Standardeinstellung für WLAN11)
  • http://<HOST-Adresse>:3000/EXT;VC=x264/1 (verwende x264 Codec)
  • http://<HOST-Adresse>:3000/EXT;QUALITY=DSL6000/1 (optimiert für DSL6000)
  • http://<HOST-Adresse>:3000/EXT;VBR=250;ABR=16;WIDTH=128/1 (manuelle Vorgabe der Video/Audiobitrate und der Breite)

[Bearbeiten] Bugs und Wünsche

[Bearbeiten] Entwicklerversion

git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git

[Bearbeiten] Aktuelle Version

0.6.1

[Bearbeiten] Links

  1. Homepage des Plugins
In anderen Sprachen