[Announce] LazyServer - HTTP Streaming für Aufnahmen dank ProjectX

  • Hallo Leute,


    angeregt von ThomasHS@vdrportal's streaming script für Aufnahmen ([Announce] Zweiter Versuch: script zum Streamen von Aufzeichnungen mit nem Browser) und "gepusht" von netz@vdrportal habe ich mich mal hingesetzt und ProjectX in einen HTTP server gegossen, der es ermöglicht Aufnahmen als MPEG2 PS zu streamen. Das Ganze ist als Gegenstück für LazyBones gedacht, so dass man damit jetzt live Fernsehen und Aufnahmen ansehen kann. Man kann den Server aber auch standalone betreiben und die Aufnahmen ohne LazyBones streamen.
    Der Server liefert die Daten so schnell, wie sie vom Client verarbeitet werden. Daher ist auch schneller Vorlauf (z.b. mit xine) und Pause möglich. In Zukunft ist vll auch möglich, die cut-Funktion von ProjectX zu nutzen, so dass Werbung nicht mitgestreamt wird. Das Funktioniert im Moment aber noch nicht.


    Vorraussetzung für LazyServer ist Java 1.5 und eine funktionierende svdrp Verbindung zum VDR. Alles Weitere ist der README zu entnehmen.


    LazyServer gibt's hier: http://developer.berlios.de/projects/lazybones


    Die passende Version von LazyBones ist auch schon fertig. Leider spinnt das Releasesystem von Berlios im Moment etwas.
    Daher gibt es die Datei vorerst nur auf meiner Homepage: LazyBones CVS 28.05.2007
    Die Neuerungen in LazyBones
    1. Die Möglichkeit Aufnahmen anzuschauen über den LazyServer
    2. In der Zeitleiste habe ich Schnellzugriff-Buttons für die nächsten 7 Tage eingebaut (Vorgeschlagen von netz@vdrportal)


    Dann schickt mir mal Eure Bugreports ;)


    Gruß
    Henrik

  • Geile Idee. Gefällt mir gut. Leider funktioniert direktes Anklicken im Webbrowser unter Windows XP nicht. Firefox 2 fragt zwar mit welchem Programm ich das laden will (mplayer.hq, vlc, MS Media Player, ...), lädt aber das komplette nn.mpg nach C:\windows\temp und startet dann erst den gewählten Player. Ist der Übertragene Dateityp "Videoclip" überhaupt ein Standard? vdradmin deklariert Life-Streams als "video/x-mpegurl" was auch funktioniert...


    Der IE7 will direkt mit dem MediaPlayer streamen. Dieser bricht mit unterschiedlichen Fehlern ab, z.B. "Ende der Datei (EOF) erreicht." oder einem fehlenden Codec.


    Wenn ich die URL direkt im Player angebe, wird sofort gestreamt.


    Zweimal ist mir der LazyServer hängen geblieben. Wiedergabe am Windows-Client gestoppt um andere Sendung zu testen, keine Reaktion. Die Konsole zeigt den zuerst übertragenen Film im log. Ich musste den LazyServer jeweils mit Strg-C stoppen und neu starten. Da der Server nach dem Start erst nach 84 Sekunden* bereit ist, ist das natürlich ziemlich lästig.


    * Es liegen viele Aufzeichnungen, auch Fremdformate (divx, iso,..) im Pfad.


    Hier das Ende der des LazyLogs:

    Code
    [DEBUG] org.hampelratte.vdr.streaming.ClientHandler - GET /rec/20 HTTP/1.1
    [DEBUG] org.hampelratte.vdr.streaming.ClientHandler - Requested recording #20
    [DEBUG] org.hampelratte.vdr.streaming.VideoDirParser - Found 2 candidates
    [DEBUG] org.hampelratte.vdr.streaming.VideoDirParser - Best match for film~usb001~varchiv~starwars~%Star Wars: Episode III - Die Rache der Sith:Star Wars: Episode III - Die Rache der Sith 59%

    Debian Squeeze Bullseye mit vdr 1.7.18 2.6.0-1~etobi1 e-tobi/multipatch, AMD Phenom-CPU, 4 GB RAM, Technotrend S2-6400, Digital Devices Cine S2 V6, 2 TByte HDD für Videodaten.

  • Zitat

    Original von HolgerAusB
    Geile Idee. Gefällt mir gut. Leider funktioniert direktes Anklicken im Webbrowser unter Windows XP nicht. Firefox 2 fragt zwar mit welchem Programm ich das laden will (mplayer.hq, vlc, MS Media Player, ...), lädt aber das komplette nn.mpg nach C:\windows\temp und startet dann erst den gewählten Player. Ist der Übertragene Dateityp "Videoclip" überhaupt ein Standard? vdradmin deklariert Life-Streams als "video/x-mpegurl" was auch funktioniert...


    von den entsprechenden mimetypes hab ich nicht so den plan. ich streame die datei als video/mpeg raus. mit meinem gentoo und xine, mplayer bzw. mplayerplug-in klappt das auch problemlos. aber ich werde auch mal video/x-mpegurl probieren.


    Zitat


    Der IE7 will direkt mit dem MediaPlayer streamen. Dieser bricht mit unterschiedlichen Fehlern ab, z.B. "Ende der Datei (EOF) erreicht." oder einem fehlenden Codec.


    der MediaPlayer taugt sowieso nichts, hat bei mir auch am codec rumgenörgelt. vlc hat unter windows anstandslos losgelegt. ich werde der sache mal nachgehen.


    Zitat


    Wenn ich die URL direkt im Player angebe, wird sofort gestreamt.
    Zweimal ist mir der LazyServer hängen geblieben.


    Wiedergabe am Windows-Client gestoppt um andere Sendung zu testen, keine Reaktion. Die Konsole zeigt den zuerst übertragenen Film im log. Ich musste den LazyServer jeweils mit Strg-C stoppen und neu starten.


    hast du da auch noch eine logausgabe?


    Zitat


    Da der Server nach dem Start erst nach 84 Sekunden* bereit ist, ist das natürlich ziemlich lästig.


    mh, bei mir ist er nach 2 sekunden da. ich vermute mal, dass etwas die svdrp verbindung blockt. LazyServer selbst greift beim start einmal darauf zu, um sich die liste der aufnahmen zu holen.


    Zitat


    Hier das Ende der des LazyLogs:

    Code
    [DEBUG] org.hampelratte.vdr.streaming.ClientHandler - GET /rec/20 HTTP/1.1
    [DEBUG] org.hampelratte.vdr.streaming.ClientHandler - Requested recording #20
    [DEBUG] org.hampelratte.vdr.streaming.VideoDirParser - Found 2 candidates
    [DEBUG] org.hampelratte.vdr.streaming.VideoDirParser - Best match for film~usb001~varchiv~starwars~%Star Wars: Episode III - Die Rache der Sith:Star Wars: Episode III - Die Rache der Sith 59%


    dazu kurz ein erklärung. lazybones identifiziert aufnahmen am zeitstempel der aufnahme. gibt es mehrere aufnahmen mit dem gleichen zeitstempel, so wird der titel zu rat gezogen und der beste treffer genommen. das ist hier passiert. warum er allerdings nicht gestreamt hat, verstehe ich nicht. eigentlich sollte wenigestens ein file not found o.ä. kommen, wenn etwas schiefgelaufen ist.

  • zu deinem letzten Absatz. Bis dahin hat er ja gestreamt. Dann habe ich die Wiedergabe am Client gestoppt um eine neue Aufzeichnung zu starten aber die wird weder übertragen noch geloggt. Wie gesagt, hier hängt das Teil. Ist aber nicht reproduzierbar.

    Debian Squeeze Bullseye mit vdr 1.7.18 2.6.0-1~etobi1 e-tobi/multipatch, AMD Phenom-CPU, 4 GB RAM, Technotrend S2-6400, Digital Devices Cine S2 V6, 2 TByte HDD für Videodaten.

  • ich habe jetzt mal als mime type video/x-mpegurl probiert. aber firefox unter linux und windows wie auch der ie können damit nicht umgehen. bei video/mpeg fängt dagegen das mplayerplug-in zu spielen an. also scheint mir video/mpeg richtiger zu sein. dennoch habe ich eine option für die config eingeführt, mit der man den mimetype wie auch bei vdradmin festlegen kann.


    nachtrag: streamdev-server gibt als content-type auch video/mpeg an

  • Hallo Henrik,
    irgendwie lief das Thema an mir vorbei. :whatever Ich habe es jetzt erst gefunden.


    SUPER, wie es geworden ist. :D
    Markierte Tage der Timer.
    Punkte als Anzahl der Timer


    Anregungen :) :
    Wäre es nicht angebracht, nach Klick auf VDR (Lazybones) die Timer zu aktualisieren, oder wann werden sie aktualisiert?
    Ist die Anordnung der Buttons für die Wochentage nicht rechts ausgerichtet besser?
    Dann würde die Postion nicht abhängig sein von der Namenlänge des Wochentags.
    Den gleichen Gedanken habe ich mit den Sendernamen.
    Könnte mann die Wochentage und die Stunden nicht fixieren?


    Das Abspielen der Videos klappt bei mir in LazyServer (Gen2VDR 1.2, Firefox 2 + mplayerplug-in, Celeron 1.7 Ghz).
    Noch ein paar Fragen.


    Im Falle eines Sytems mit weniger CPU-Leistung, läuft der Stream nur mit einer niedrigeren Framerate oder Aussetzern?


    Wie bekomme ich das im TVBrowser über LazyBones hin?
    Ich habe den Browser in TVBrowser eingestellt und den Browser-Test ausgeführt, soweit funktioniert alles.
    Ein Video im VDR abzuspielen funktioniert.
    Will ich ein Video über den anderen Button abspielen, passiert aber nix.




    Einen Gedanken, den ich noch loswerden wollte. ;)
    Mit Livebuffer sollte es ja sogar möglich sein, den "VDR im Browser" laufen zu lassen ("Livebild"). :)
    Das einzige was fehlt wäre das OSD.


    Ach ja, eine Frage noch zu Lazybones.
    Kann es sein, dass bei Systemen mit mehr als einer TV-Karte, unnötig Timer-Konflikte angezeigt werden (wenn zwei Aufnahme zur selben Zeit anliegen, oder auch bei mehreren Aufnahmen auf einem Transponder)?


    bis dann,
    Nando


    P.s. Ich habe bestimmt was vergessen.

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF


    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Zitat

    Original von netz
    Hallo Henrik,
    irgendwie lief das Thema an mir vorbei. :whatever Ich habe es jetzt erst gefunden.


    war ja auch unter LazyServer getarnt :versteck



    ich war bis jetzt mit dem automatischen synchronisieren immer sparsam, weil dann wieder alle prozesse angestoßen werden und der benutzer leicht genervt werden könnte. im moment ist es so, dass nach jeder timer aktion (anlegen, bearbeiten, löschen) die timer neu synchonisiert werden. vll sollte ich mal eine umfrage für alle lazybones user starten.



    Zitat


    Ist die Anordnung der Buttons für die Wochentage nicht rechts ausgerichtet besser?
    Dann würde die Postion nicht abhängig sein von der Namenlänge des Wochentags.
    Den gleichen Gedanken habe ich mit den Sendernamen.
    Könnte mann die Wochentage und die Stunden nicht fixieren?


    das mit der ausrichtung steht auf meiner liste. ich war nur zu faul wieder einen anderen layoutmanager zu nehmen. swing kenner werdens verstehen ;)


    Zitat


    Das Abspielen der Videos klappt bei mir in LazyServer (Gen2VDR 1.2, Firefox 2 + mplayerplug-in, Celeron 1.7 Ghz).
    Noch ein paar Fragen.


    Im Falle eines Sytems mit weniger CPU-Leistung, läuft der Stream nur mit einer niedrigeren Framerate oder Aussetzern?


    am stream wird nicht gedreht. langsamere rechner werden dann wohl framedrops haben, d.h. der player wird einzelne frames/bilder nicht mehr berechnen, sondern einfach verwerfen um mit der datenflut noch zurechtzukommen.



    Zitat


    Wie bekomme ich das im TVBrowser über LazyBones hin?
    Ich habe den Browser in TVBrowser eingestellt und den Browser-Test ausgeführt, soweit funktioniert alles.
    Ein Video im VDR abzuspielen funktioniert.
    Will ich ein Video über den anderen Button abspielen, passiert aber nix.



    auf localhost läuft dein vdr? PLAYER: Verbindung fehlgeschlagen: Connection refused das ist die ausgabe von mplayer, hat also in dem moment nichts mehr mit lazybones zu tun, es sein denn, du hast in den settings den host noch nicht angegeben.



    Zitat


    Einen Gedanken, den ich noch loswerden wollte. ;)
    Mit Livebuffer sollte es ja sogar möglich sein, den "VDR im Browser" laufen zu lassen ("Livebild"). :)
    Das einzige was fehlt wäre das OSD.


    stimmt. aber für osd kann ich dir keine hoffnung machen.



    Zitat


    Ach ja, eine Frage noch zu Lazybones.
    Kann es sein, dass bei Systemen mit mehr als einer TV-Karte, unnötig Timer-Konflikte angezeigt werden (wenn zwei Aufnahme zur selben Zeit anliegen, oder auch bei mehreren Aufnahmen auf einem Transponder)?


    eigentlich nicht. hast du in den settings die anzahl deiner karten angegeben?



    gruß
    henrik

  • Zitat

    war ja auch unter LazyServer getarnt :versteck


    Ich wollte meine Antwort auch zu Lazybones verschieben lassen, aber du warst mit deiner Anwort zu schnell. ;)


    Zitat


    auf localhost läuft dein vdr? PLAYER: Verbindung fehlgeschlagen: Connection refused das ist die ausgabe von mplayer, hat also in dem moment nichts mehr mit lazybones zu tun, es sein denn, du hast in den settings den host noch nicht angegeben.


    Eingestellt ist bei mir in Lazybones "localhost und Port 2001" (Port 3001 probiert).
    Als Player muß mplayer eingestellt sein (ist bei mir)?


    Zitat

    eigentlich nicht. hast du in den settings die anzahl deiner karten angegeben?


    Genau das war mein Problem. Es war nur eine Karte angegeben.

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF


    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Zitat

    Original von netz
    [Eingestellt ist bei mir in Lazybones "localhost und Port 2001" (Port 3001 probiert).
    Als Player muß mplayer eingestellt sein (ist bei mir)?


    als player kannst du angeben, was du möchtest. das funktioniert ja bereits auch. man sieht die ja die ausgabe von mplayer im log. wenn vdr bei dir auf localhost läuft und auch LazyServer auf localhost läuft, sollte es klappen. ansonsten musst du in den settings halt den wirklichen host angeben, auf dem vdr läuft. du kannst auch eine ip angeben...

  • Ähhm, :lachen2 ich habe natürlich Lazyserver nicht gestartet gehabt. Ich dacht, es ist integriert .
    Mit Lazyserver funzt es.

    TEST FOXCONN 560A "Cool`n`Quiet"
    Software: Gen2VDR V2 + vdr-1.6-ext59 + Nvram-Wakeup + KDE
    Hardware: AMD Athlon 64 X2 Dual Core 4800+, 4GB DDR2RAM, SAMSUNG SATA HD501LJ 500 GB, SAMSUNG SP2514N 250 GB, HD SV1604N 160GB, HL-DT-STDVD-RAM GSA-H58N, Cablestar2, TTDVB-C + Scart-out + ASUS-SPDIF


    Activy 300
    Software: Gen2VDR V2 + vdr-1.4.7-ext40 + STR + FreeVo (Browser, Games, ... )
    Hardware: 256MB SDRAM, HD SV1604N 160GB, DVD SD-M1612, FSDVB-C + Scart-out, Technisat Cablestar2, leise

  • Hi Henrik,


    ein kleiner Wunsch (es ist ja bald Weihnachten) :


    Für einfache Budget-VDR-Installationen die nicht üppig ausgestattet sind, ist die Installation des LazyServers mit Java/ProjectX recht aufwändig. Deshalb würde gerne auf den Clients die Aufnahmen auch aus dem TV-Browser über das vorhandene vdradmin-"Streaming" Interface (HTTP, dann Samba bzw NFS) aufrufen.


    Soweit ich das überblicken kann muß in LazyBones der Aufruf des Players anstatt
    "http://vdr:3001/rec/XX"
    nun via
    "http://linvdr@vdr:8001/vdradmin.m3u?aktion=rec_stream&id=XX"
    aufgerufen werden. Setzt natürlich ein entsprechend konfiguriertes vdradmin voraus.


    Mit einer kleinen Option wäre hier geholfen !?

  • Möglich wäre das. ProjectX ist allerdings für das Verarbeiten von Dateien implementiert, nicht für Streams, was in Java zwar keinen großen Unterschied macht, aber man müsste ProjectX dahingehend aufbohren, dass man den Videostream direkt in die Verarbeitung jagen kann anstelle von Dateien.
    Das wäre auch nicht schlecht für laufende Aufnahmen, im Moment wird nämlich beim Starten des Streamings das Aufnahmeverzeichnis nach .vdr-Dateien durchsucht und diese an ProjectX übergeben. Kommen später noch welche hinzu, weil die Aufnahme "wächst", werden diese nicht mehr mitgestreamt. Könnte man Streams verarbeiten, könnte man das Verzeichnis regelmäßig durchsuchen und dann neue Dateien einfach mit an den Stream "ranhängen".


    Ist alles möglich, muss aber auch gemacht werden ;) Ich verspreche erstmal Nichts, dann gibt es auch keine Enttäuschung.


    Gruß
    Henrik

  • Zitat

    Original von cybert721
    Soweit ich das überblicken kann muß in LazyBones der Aufruf des Players anstatt
    "http://vdr:3001/rec/XX"
    nun via
    "http://linvdr@vdr:8001/vdradmin.m3u?aktion=rec_stream&id=XX"
    aufgerufen werden. Setzt natürlich ein entsprechend konfiguriertes vdradmin voraus.


    Hi,
    beinahe hätte ich deinen Beitrag überlesen. Das Streamen über vdradmin sollte kein Problem sein. Da muss ich ja nur einen anderen Parameter an den Player übergeben. Wusste gar nicht, dass der vdradmin das auch kann. Ich erstelle mal einen feature request bei Berlios, damit ich das nicht vergesse.


    Gruß
    Henrik

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!