VOD-Streaming von Aufnahmen aus VDRAdmin-Am inclusive Transcoding

  • Hallo,


    ich versuche seit einiger Zeit mir aus vdradmin heraus nicht nur Live-TV, sondern auch Aufnahmen zu streamen. Dabei geht es mir darum, dass ich auch über das Internet streamen kann. Dank externremux.sh kann ich Live-TV auch passend zu meiner DSL-Bandbreite transkodieren. Für Aufnahmen hatte ich an die VOD-Funktion von vlc gedacht.


    Mit diesem Script kann ich dann auch die nötigen VOD-Streams automatisiert erzeugen:



    Vorteile:


    - Pfade unter rtsp://vdr:5554/... entsprechen denen im Aufnahmeverzeichnis
    -> vdradmin Streaming-Funktion läuft direkt bei Angabe von "rtsp://vdr:5554" unter "Pfad zu den VDR-Aufnahmen auf Ihrem PC:"


    - Dank VOD kann beliebig gespult werden und auch mehrere Streams gleichzeitig sind möglich (wenn die Internetleitung schnell genug ist und Prozessor genug Wumms zum Transkodieren hat)


    - Transcoding zu h264 erlaubt auch bei meinem DSL-6000 relativ brauchbare Qualität


    Nachteile:


    - VOD funktioniert, soweit ich das sehe, bis jetzt nur über rtsp. Über ein NAT hinweg hab ich das noch nicht zum Laufen gebracht. Mit Hilfe von OpenVPN ist aber auch das kein größeres Problem.


    - Beim Durchlaufen des Scripts wird jede gefundene Datei gescannt (~2s). Bis alle Aufnahmen verfügbar sind kann das also ganz schön dauern.


    - Da vdradmin nur ne .m3u ausspuckt, muss diese über vlc geöffnet werden. Besser wäre da natürlich ne Browser-Integration mit vlc-plugin und vernünftigem Player



    Ich stell das hier rein, da ich bestimmt nicht der einzige bin, der gerne auch Aufnahmen übers Internet streamen würde. Auch wenn es noch lange nicht perfekt ist, funktioniert es zumindest schon mal.


    Vielleicht hat ja jemand von Euch Ideen um die restlichen Probleme los zu werden. Ein Traum wäre natürlich wenn ich jemanden der sich mit vdradmin, xxv oder vdr-live auskennt dazu inspiriere die VOD-Technik zu integrieren.

    Gruß


    Madmoos

  • Hi,


    da heute Samstag ist und ich dementsprechend ausnahmsweise mal zu viel Zeit hab, hab ich mal an der "Konzeptstudie" weitergearbeitet.


    Mit Hilfe einer kleinen Änderungen an vdradmin habe ich meinem Traum vom Aufnahme-Streaming inklusive Transkodierung (in diesem Fall h264) aus der Web-Oberfläche erreicht (bis auf die rtsp vs. NAT Problematik). vdradmin liefert nun nicht nur den Link zum Stream, sondern initiiert auch den VOD-Stream mit Hilfe einer Telnet-Verbindung zu VLC. Es müssen so nicht mehr auf Verdacht alle Aufnahmen gescannt werden.




    Mit Hilfe dieser Änderung an vdradmin und einem laufenden VLC mit aktiviertem Telnet-Interface läuft das Aufnahme-Streaming dann schon fast WAF-Konform. Dazugekommen ist eigentlich nur die Funktion init_VOD und der dementsprechende Aufruf.


    Die Einbindung in vdradmin ist natürlich noch sehr dreckig. Wer ist denn für die Pflege und Weiterentwicklung von vdradmin zuständig? Vielleicht besteht ja Interesse an einer Integration meiner Idee.


    Gruß


    Madmoos

  • Hi Madmoos,


    hast Du das in den VDRAdmin oder den VDRAdmin-AM integriert?
    Für letzteren bin ich zuständig und ich hätte Interesse das einzubauen.


    Ich habe mir den Patch zwar noch nicht genau angeschaut, aber trotzdem schon mal ein paar Gedanken, die ich mir schon vor Deinem Patch gemacht habe:
    Ich hätte es gerne etwas universeller, so dass man auch ffmpeg (bzw. ffserver) einsetzen kann. Dazu könnte ich mir vorstellen, dass man init_VOD in ein externes Skript auslagert, das dann vom VDRAdmin-AM aufgerufen wird.
    Das ganze dann natürlich parametrisiert, so dass man evtl. das Ausgabeformat bzw. -qualität anpassen kann.


    Gruß,
    Andreas

  • Hi Andreas,


    ist in VDRAdmin-AM ($VERSION = "3.6.2") eingebaut.


    Die universelle Einbindung ist bestimmt ne gute Idee, wer weiss, was andere da noch für Anwendungen haben. Die Einbindung über ein externes Skript dürfte auch gut funktionieren; es muss da eigentlich nur eine Variable($DATA) übergeben werden, mehr ist da soweit ich das sehe nicht nötig. Vielleicht wäre es dann geschickt den Pfad für die .m3u vom Skript zurückgeben zu lassen, damit man da auch Freiheit hat.


    Allerdings ist VLC nach meinen Recherchen das einzige was richtiges VOD (mit Möglichkeit zum Spulen und Stoppen) in Kombination mit Transkodierung ermöglicht.


    Hab nur kurz über dem Thread zur Einbindung des vlc-plugins drübergelesen, aber das wäre in dem Zusammenhang auch ne interessante Sache. Nen schön gestalteten Player direkt in VDRAdmin-AM würde sich gut machen(http://www.videolan.org/doc/play-howto/en/ch04.html#id310965).


    Gruß


    Alex

  • Hi Alex!


    Zitat

    Original von madmoos
    Hi Andreas,


    ist in VDRAdmin-AM ($VERSION = "3.6.2") eingebaut.


    Die universelle Einbindung ist bestimmt ne gute Idee, wer weiss, was andere da noch für Anwendungen haben. Die Einbindung über ein externes Skript dürfte auch gut funktionieren; es muss da eigentlich nur eine Variable($DATA) übergeben werden, mehr ist da soweit ich das sehe nicht nötig. Vielleicht wäre es dann geschickt den Pfad für die .m3u vom Skript zurückgeben zu lassen, damit man da auch Freiheit hat.


    Ja, das dachte ich mir auch.


    Zitat

    Allerdings ist VLC nach meinen Recherchen das einzige was richtiges VOD (mit Möglichkeit zum Spulen und Stoppen) in Kombination mit Transkodierung ermöglicht.


    Da kenne ich mich zu wenig aus, weil ich das nicht nutze.


    Zitat

    Hab nur kurz über dem Thread zur Einbindung des vlc-plugins drübergelesen, aber das wäre in dem Zusammenhang auch ne interessante Sache. Nen schön gestalteten Player direkt in VDRAdmin-AM würde sich gut machen(http://www.videolan.org/doc/play-howto/en/ch04.html#id310965).


    Gruß


    Alex


    Ja, das wäre schön. Habe aber in dieser Hinsicht wenig Interesse, das selbst zu machen.


    Gruß,
    Andreas

  • Hi!


    Nur ne prinzipielle Frage:
    Wenn jetzt eine Aufnahme aus mehreren Dateien besteht zeigt dann der VOD-Stream die richtige Gesamtdauer an, oder springt man dann zwischen den Segmenten wie bei einer Playlist?
    Verwende nämlich den Hardlink-Cutter-Patch und der erstellt sehr viele Einzeldateien.


    Welche VLC-Version verwendest du?


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi,


    der zeigt die Einzelspieldauer der Stücke an. Deswegen ist es leider auch so, dass beim Wechsel kurz das vls-Fenster klein wird.


    Damit h264 transkodieren bei mir vernünftig läuft hab ich auf dem Server "VLC media player 1.0.0-git Goldeneye" drauf. Andere Codec laufen auch mit ner älteren.


    Gruß


    Alex

  • Hi,


    hatte gerade noch mal ein wenig Zeit weiter zu probieren. Es läuft jetzt mit eingebundenem VLC-Plugin inkl recht brauchbarem Interface.


    Außerdem hat es sich im Zuge der Weiterentwicklung ergeben, dass zerstückelte Aufnahmen als ein Stream laufen. Ob es allerdings an den Übergangsstellen ruckelt kann ich noch nicht sagen.


    Hier die geänderten Passagen:



    Für den Player sind jetzt noch einige Dateien in /usr/share/vdradmin-am/template/default nötig (siehe angehängte Datei). Weiterhin muss natürlich auf dem jeweiligen Host ein vlc der auf telnet lauscht laufen:

    Code
    vlc --ttl 12 --color -I telnet --telnet-password videolan --extraintf http --rtsp-host 0.0.0.0:5554


    Ist immer noch alles recht dreckig geskripted, aber es läuft schon mal ganz gut.


    Gruß


    Alex

  • Hi!


    Danke für die Antwort.
    Perl ist für mich ja leider Neuland deshalb hätte ich da noch ne Frage: Was hat sich an den Befehlen über das telnet-Interface geändert dass mehrere Teilstücke als ein Stream verarbeitet werden? Würde das gerne mal so testen ohne vdradmin.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi!


    madmoos: So, habe jetzt mal das ganze nachvollzogen und vlc scheint das ganze dann wirklich am Stück abzuspielen. Allerdings sehe ich keinen vernünftigen Progress (bleibt bei 0 stehen) und auch die Endzeit stimmt nicht. D.h. ich kann auch nicht in der gestreamten Aufnahme springen.


    Geht das bei dir? Bekommst du korrekte Spielzeiten und kannst du in der Aufnahme springen?
    Ev. liegt das dann ja an deiner VLC-Version ... habe hier 0.9.4.
    Wobei 1.0.0 habe ich auf der Homepage auch nicht gesehen, nur 0.9.8.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi,


    @ Broughs78: Bei mir funktionieren die Zeitanzeigen auch nicht vernünftig, aber in der Aufnahme springen schon. Die 1.0.0 Version hab ich selbst kompiliert, wegen h264. Weiß nicht ob das inzwischen auch in den Standardversionen läuft. Andere Codecs funktionieren auf jeden Fall mit denen, aber bei meiner beschränkten Bandbreite sah das dann nicht so super aus:-)


    @ Amair: Hab mal nen Patch fertig gemacht. Im Moment entfernt der aber die normale Funktion mit der .m3u Ausgabe komplett. Ich bin jetzt ca. 2 Wochen im Urlauf. Danach würde ich da aber noch mal ein wenig dran rumbasteln, damit es auch konfigurierbar ist. Ich werde dann auch noch mal das html-template für den Player hübscher machen.


    Gruß


    Alex


    P.S.; Damit der Patch läuft muss libnet-telnet-perl installiert sein.

  • Hallo liebe VDR-ler,


    ich hab inzwischen ein bisschen Zeit gefunden die VOD-Erweiterung in eine für meine Bedürfnisse vernünftige Form zu bringen. Der Stand ist zur Zeit dieser:


    Über VLC wird das Streaming von Livefernsehen und Aufnahmen realisiert. Die komplette Steuerung funktioniert über die bekannten Stream-Buttons von vdradmin-am. Der Stream wird, wenn möglich, über das Mozilla-VLC-Plugin direkt im Browser dargestellt. Zusätzlich wird ein Link angezeigt, um ihn in einem externen (VLC-)Player zu nutzen.


    Es kann eine Transkodierung des Streams erfolgen. Bei mir getestet ist nur h264 (mit selbstkompieliertem "VLC media player 1.0.0-pre2 Goldeneye"). Damit lassen sich auch über durchschnittliche DSL-Upstreams einigermaßen brauchbare Streams gucken. Andere Codecs sollten aber auch möglich sein. Die VOD-Übertragung per rtsp hat den Vorteil, dass Spulen in Aufnahmen möglich ist. Gleichzeitig ergibt sich im Moment noch das Problem, dass das Streaming über NAT mit VLC nicht möglich ist. Diese Beschränkung kann aber recht einfach mit Hilfe eines VPN überwunden werden.


    Der interne Ablauf sieht so aus:


    - Bei der ersten Anforderung eines Live- oder Aufnahmestreams wird eine VLC-Instanz gestartet und über Telnet die passende vlm-Konfiguration übertragen.


    - Bei jedem weiteren angeforderten Stream wird der selben VLC-Instanz zusätzlich die neue Konfiguration geschickt.


    - Anschließend wird in beiden Fällen eine html-Seite mit dem VLC-player und einem Link auf den Stream angezeigt.


    - Die VLC-Instanz wird zusammen mit vdradmin-am über Telnet beendet.


    In /etc/vdradmin-am/vdradmind.conf sind folgende neue Parameter zu finden:


    #Zum aktivieren der VOD-Erweiterung, sonst verhält sich vdradmin-am wie gewohnt
    VLC_RTSP_ENABLED = 1


    #Hostname für den RTSP-Host (default ist die lokale IP)
    VLC_RTSP_HOST =


    #Port für den RTSP-Host (default ist 5554)
    VLC_RTSP_PORT = 5554


    #Transcode-Einstellungen
    VLC_RTSP_TRANSCODE = transcode{vcodec=h264,vb=512,scale=1,acodec=mpga,ab=128,channels=2}


    #Telnet-Port, der für die Kommunikation mit der VLC-Instanz genutzt werden soll
    VLC_TELNET_PORT = 4212


    Zur Installation muss libnet-telnet-perl installiert sein. Alle benötigten Dateien sind im angehängten Archiv zu finden. Der Patch ist gegen Version 3.6.4 von vdradmin-am erzeugt worden und muss auf /usr/bin/vdradmind angewandt werden. Die Dateien aus dem template-Ordner müssen dann noch in /usr/share/vdradmin-am/template/default/ kopiert werden.


    Ich habe die Erweiterung bei mir recht ausführlich unter Ubuntu getestet und sie funktioniert ordentlich, ich kann aber natürlich für nichts garantieren. Das ganze ist eine absolute alpha-Version. Ich würde mich freuen, wenn es ein paar Leute mal testen und mir berichten, wie es bei ihnen funktioniert. Auch für jegliche Fragen und Anregungen bin ich offen.


    Gruß


    madmoos

Jetzt mitmachen!

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