Streamdev-plugin
Wirbel (Diskussion | Beiträge) (→Wunschliste) |
Wirbel (Diskussion | Beiträge) (→Snapshot) |
||
Zeile 148: | Zeile 148: | ||
* http://projects.vdr-developer.org/projects/plg-streamdev/issues | * http://projects.vdr-developer.org/projects/plg-streamdev/issues | ||
− | == | + | ==Entwicklerversion== |
git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git | git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git | ||
Version vom 25. August 2013, 11:26 Uhr
Inhaltsverzeichnis |
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.
Status
Letztes Update 05/2012
Bilder
Installation
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!
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):
- 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)
VTP Protokoll
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.
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.
Sonstiges
Probleme
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
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.
Sprachdateien werden nicht erkannt (VDR>=1.5.7)
- Im Menüs des Plugins ist nur Englisch verfügbar
- Abhilfe: vdr-streamdev-gettext.patch
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.
Tipps
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.
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 dyndns oder ähnlichen Dynamic DNS Anbietern, damit man die IP des Routers nicht kennen muss
- 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)
- ein Beispiel für /root/externremux.sh für T-DSL6000:
#!/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
- Der Zugriff auf den Stream erfolgt dann über http://<DynDNS-Name/Router-IP>:3000/Extern/<Channel>
Bei neueren Versionen wird Extern abgekürzt mit EXT
- Der Zugriff auf den Stream erfolgt dann über http://<DynDNS-Name/Router-IP>:3000/EXT/<Channel>
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):
- http://<DynDNS-Name/Router-IP>:3000/EXT/1 (Kanal 1 mit Standardeinstellungen)
- 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)
- http://<DynDNS-Name/Router-IP>:3000/EXT;VC=x264/1 (verwende x264 Codec)
- http://<DynDNS-Name/Router-IP>:3000/EXT;QUALITY=DSL6000/1 (optimiert für DSL6000)
- http://<DynDNS-Name/Router-IP>:3000/EXT;VBR=250;ABR=16;WIDTH=128/1 (manuelle Vorgabe der Video/Audiobitrate und der Breite)
Bugs und Wünsche
Entwicklerversion
git clone git://projects.vdr-developer.org/vdr-plugin-streamdev.git