[live] [merged] Streamen von Aufzeichnungen im Browser

  • Richtig, doch das heißt:

    • Die Defaults müssen entsprechend geändert werden. Dabei brauchen wir aber vier unterschiedliche, die in setup.cpp und setup.ecpp gleich sein sollten. Deshalb auch die entsprechenden Änderungen mit den in setup.h definierten Konstanten, die dann an beiden Stellen identisch genutzt werden können.
    • Jeder Nutzer muss den zusätzlichen Parameter im Setup selbst an der richtigen Stelle ergänzen (fehleranfällig) oder die Defaults mit dem zusätzlichen Parameter neu laden (kann übersehen werden).

    Weil jeder Nutzer mit diesem Ansatz zwangsläufig einen manuellen Eingriff durchführen muss, hatte ich mich für den anderen Ansatz entschieden, der sich automatisch "aktiviert" – und das auch nur für das Streamen von Aufzeichnungen, um eine mögliche Regression für das Streamen von Sendern auszuschließen.


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    • Jeder Nutzer muss den zusätzlichen Parameter im Setup selbst an der richtigen Stelle ergänzen (fehleranfällig) oder die Defaults mit dem zusätzlichen Parameter neu laden (kann übersehen werden).

    Da ich euch beiden zustimmen kann ein Vorschlag meinerseits: prüfen beim Start des Plugins ob " -re " in den Parametern enthalten ist. Falls nein, an der richtigen Stelle ergänzen.

  • Da ich euch beiden zustimmen kann ein Vorschlag meinerseits: prüfen beim Start des Plugins ob " -re " in den Parametern enthalten ist. Falls nein, an der richtigen Stelle ergänzen.

    Das kann man natürlich so machen. Das heißt dann aber auch, dass -re gleichermaßen für das Streamen von Sendern wie für Aufzeichnungen gilt.


    Bei meinen Versuchen hatte ich bei diesem Ansatz beim Streamen von Sendern hin und wieder Bildstörungen, die es vorher nicht gegeben hatte. Ich vermute, weil die von den Sendern zwar mit der benötigten Frame-Rate einlaufenden Daten in diesen Fällen um Millisekunden zu spät bei FFMPEG bzw. dem Player ankommen. Bei Aufzeichnungen ist es dagegen umgekehrt, denn da kommen die Daten ohne -re schneller, als der Player sie abruft, sodass die Pufferdateien "überlaufen".


    Deshalb hatte ich mich letztlich für diesen Ansatz entschieden, der die beiden Anwendungsfälle bezüglich des zusätzlichen Parameters getrennt hält.


    MarkusE hat jetzt alle Informationen zu diesem Aspekt und muss sich als Code owner entscheiden, wie er damit umgehen möchte. Mein Lösungsansatz und die Fakten hierzu liegen euch vor.


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Hi Stefan,


    Wenn ich dich richtig verstehe, brauchen wir für Live tv und Aufzeichnungen unterschiedliche ffmpeg Parameter :( .

    Das fällt mir jetzt schwer zu sagen, weil ich die Zahl der Einstellungen sehr gerne minimieren möchte. Aber ich fürchte, wir brauchen dann 4 weitere ffmpeg Zeilen: 4 für Live tv, und 4 für Aufzeichnungen.

    Deine Lösung ist einfach zu unflexibel. Wenn wir dann irgend wann mal z.B. für für Live tv einen Parameter brauchen, der bei Aufzeichnungen nicht drin sein darf ...


    Kann man das irgendwie anders lösen, und nicht mit 8 Zeilen in den Einstellungen? Z.B. indem man die 8 Zeilen in eine Konfigurationsdatei schreibt? Oder über Parameter beim Aufruf von vdr/live? Ich wollte diese Einstellungen schon immer loswerden, aus security Gründen.


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Ich denke nicht, dass wir da künftig andere Parameter brauchen werden. Der einzige Unterschied zwischen Sendern und Aufzeichnungen ist der Parameter(satz) für die Begrenzung der Frame-Rate, mit der FFMPEG den Video-Stream einlesen und aufbereiten soll. Der Rest bezieht sich darauf, wie das jeweilige Datenformat des Video-Streams zu verarbeiten ist. Wieso sollten Aufzeichnungen bei gleichem Datenformat andere Parameter erfordern?


    Kann man das irgendwie anders lösen, und nicht mit 8 Zeilen in den Einstellungen? Z.B. indem man die 8 Zeilen in eine Konfigurationsdatei schreibt? Oder über Parameter beim Aufruf von vdr/live?

    Diese Vorgehensweisen haben alle den Seiteneffekt, dass sie sich nicht automatisch aktivieren sondern mehr oder weniger umfangreiche Handarbeit nach dem Upgrade erfordern. Ich bin mir nicht sicher, ob wir und die Live-Nutzer das wirklich wollen.


    Zudem sollten wir die Kommandozeilenparameter nicht beliebig umfangreich anwachsen lassen, denn auch dort haben wir eine Längenbeschränkung. Und die Kommandozeile zum Start des VDR ist (bei mir) auch so schon gefährlich lang.


    Ich wollte diese Einstellungen schon immer loswerden, aus security Gründen.

    Verstehe ich und fände ich auch gut, aber ein bessere Idee habe ich gerade auch nicht…


    Machen wir es für den Moment doch nicht komplizierter, als es sein muss.


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • PS – Doch noch eine Idee hierzu: Man könnte im Makefile die bestehenden FFMPEG-Befehle aus der VDR-Setupdatei auslesen und daraus eine Konfigurationsdatei erzeugen, die Live ab da nutzt. Mit dieser Version entfiele dann auch der entsprechende Block in den Einstellungen. Ein Nachteil wäre aber – sofern man nicht die Konfigurationsdatei in ffmpeg.cpp bei jedem Start des Players erneut einliest –, dass man zum Experimentieren mit den Kommandos den VDR immer wieder neu starten müsste. Was denn doch etwas lästig werden könnte…


    Der Ansatz zur Umstellung per Makefile sollte für alle "Selbstbauer" passen, weil diese das Makefile ja ausführen. Bei der Gelegenheit könnte man dann auch die Einfüge-Position mit "<ratelimit>" o.ä. (ähnlich wie "<input>") markieren.


    Mir fällt es allerdings schwer einzuschätzen, wie sich dieser Ansatz fürs Packaging eignet und ob sich beim Update der Packages so ein Mechanismus anstoßen lässt. Vielleicht kann seahawk1986 eine Einschätzung hierzu liefern?

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Das Ganze könnte man natürlich auch zur Laufzeit innerhalb von Live durchführen:

    • Wenn keine Konfigurationsdatei für die FFMPEG-Kommandos vorhanden ist, wird eine Konfigurationsdatei aus den in den Einstellungen hinterlegten Kommandos erzeugt. Für das Streamen im Browser werden die gleichen Kommandos dann noch mit "-re" vor "-i <input>" angereichert, sodass man in der Datei die acht Kommandos positionskodiert (Zeilennummer, einfacher) oder auch per Tag am Zeilenanfang gekennzeichnet (flexibler, etwas komplizierten beim Einlesen) hinterlegt hat.
    • Sobald eine Konfigurationsdatei vorhanden ist, werden die Kommandos aus den VDR-Einstellungen ignoriert.

    Den Dateinamen könnte man per Plugin-Parameter einstellbar machen und ffmpeg.conf als Default nehmen.


    Gefiele dir dieser Ansatz besser, und soll ich mich da mal drüber machen?


    Danke & Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited once, last by shofmann ().

  • Ich wollte diese Einstellungen schon immer loswerden, aus security Gründen.

    Das hat mich auch schon immer gestört. Wichtig bei einer neuen Lösung finde ich, dass die auszuführende Datei nicht konfigurierbar ist, sondern nur deren Parameter.

  • Das hat mich auch schon immer gestört. Wichtig bei einer neuen Lösung finde ich, dass die auszuführende Datei nicht konfigurierbar ist, sondern nur deren Parameter.

    Eine ausführbare Datei würde nach meinem Ansatz sowieso nicht erzeugt, sondern lediglich die Kommandos von den Einstellungen in eine (per Editor zu pflegende) Konfigurationsdatei (mit Rechten von typischerweise 644, je nach umask) verlagert.

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited once, last by shofmann ().

  • Hier ein erster Patch für die Verwaltung der FFMPEG-Kommandos in einer Konfigurationsdatei (statt in den Einstellungen im Web-Interface):

    Ohne explizite Festlegung der Konfigurationsdatei durch den Benutzer mittels des Parameters -f <conf-file> bzw. --ffmpegconf=<conf-file> werden die FFMPEG-Kommandos in der Datei ffmpeg.conf im Plugin-Konfigurationsverzeichnis .../plugins/live gesucht. Das Argument conf-file kann "nur" ein Dateiname, genauso gut aber auch ein absoluter oder ein zum Plugin-Konfiguratiosnverzeichnis relativer Pfad sein.


    Sofern eine Zeile keine Kommentarzeile ist ('#' als erstes Zeichen) oder leer ist, enthält sie als erstes eine Kennung, die angibt, welche Art von Datenstrom verarbeitet werden soll. Als Präfix dient chn für das Streamen von Sendern und rec für das Streamen von Aufzeichnungen. Danach schließt sich das Format des Datenstroms an, also H264, HVEC oder MPG2 sowie DFLT für alle anderen Formate (siehe die derzeitigen Einstellungen). Nach ein oder mehreren Whitespaces folgt dann das FFMPEG-Kommando bis zum Zeilenende. Hier ein Beispiel:

    Code
    # FFMPEG commands for streaming channels
    chnH264    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -i <input> -map 0:v -map 0:a:0 -c:v copy -c:a aac -ac 2
    # etc.
    
    # FFMPEG commands for streaming recordings
    recH264    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -re -i <input> -map 0:v -map 0:a:0 -c:v copy -c:a aac -ac 2
    # etc.

    Die vollständige Datei mit den bisherigen Defaultwerten inkl. der zusätzlichen Option -re für das Streamen von Aufzeichnungen:

    Existiert die Konfigurationsdatei noch nicht, wird sie beim Start des Plugins aus den bislang in den Einstellungen gespeicherten Kommandos neu erzeugt. Existiert die Konfigurationsdatei schon, werden die in den Einstellungen gespeicherten Kommandos ignoriert und auch nicht mehr aktualisiert bzw. beim Herunterfahren des VDR nicht mehr gespeichert. Auch im Web-Interface sind sie nicht mehr vorhanden:



    Es scheint, dass der VDR solche "abgestandenen" Einstellungen selbst dann behält (und sie dafür im Syslog beanstandet), wenn sie nicht explizit gespeichert werden.


    Alle Änderungen an den FFMPEG-Kommandos werden somit nur noch durch Editieren der Konfigurationsdatei vorgenommen. Die bisherigen Kommandos in den Einstellungen würden nur noch herangezogen, wenn die Konfigurationsdatei nochmals neu erzeugt werden müsste. In den Einstellungen fehlende Kommandos würden mit den auch bisher schon als Default gesetzten FFMPEG-Aufrufen in die Konfigurationsdatei eingetragen.


    Viele Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Im git ist ein update.

    Für Paketbauer:

    Ich habe in debian/vdr-plugin-live.install "var/lib/vdr/plugins/live/ffmpeg.conf etc/vdr/plugins/live/" eingefügt, und in

    debian/links "etc/vdr/plugins/live/ffmpeg.conf var/lib/vdr/plugins/live/ffmpeg.conf" .

    Sollte so passen. Wenn noch keine /etc/vdr/plugins/live/ffmpeg.conf existiert, wird sie angelegt. Wenn sie schon existiert und verändert wurde, wird nachgefragt. /var/lib/vdr/plugins/live/ffmpeg.conf ist dann ein Link auf /etc/vdr/plugins/live/ffmpeg.conf .


    Bei make install wird fmpeg.conf nach /var/lib/vdr/plugins/live/ffmpeg.conf kopiert, falls die Datei noch nicht existiert.


    @all:

    Bitte testen. Ich bin erst mal glücklich, dass wir das security Problem losgeworden sind :) .

    Ansonsten vermisse ich Tasten für Pause, Springen, ...


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

    Edited once, last by MarkusE ().

  • Erstmal vielen Dank!


    Bei make install wird fmpeg.conf nach /var/lib/vdr/plugins/live/ffmpeg.conf kopiert, falls die Datei noch nicht existiert.

    /var/lib/vdr/plugins/live/ffmpeg.conf wird bei mir unter Gentoo nicht kopiert.

    Das Verzeichnis /var/lib/vdr/plugins gibt es hier auch nicht. (Evtl. mit make install mit anlegen?)


    /etc/vdr/plugins/live/ffmpeg.conf wird korrekt angelegt.


    Das Streamen im Browser (firefox 115.15) von Live-TV und Aufnahmen, funktioniert hier.

    Ich hatte nur beim ersten Versuch im Browser Probleme.

    Da wurde der Stream nicht angezeigt.


    Nach dem ich auf Tag v3.3.6 zurückgegangen war um zu testen, ob es damit geht, und anschließendem Löschen des Browser-Caches, funktionierte das Streamen im Browser mit der aktuellen Version.


    Streamen in externes Programm (VLC) funktioniert hier.

    Gentoo Linux ~ VDR 2.6.9 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ LENOVO ThinkServer TS200V ~ Intel(R) Core(TM) i5 CPU680@3.60GHz ~ 16GB RAM ~ NVIDIA T400

  • vdr habe ich mit der Paketverwaltung installiert.

    Die meisten Plugins sowie auch live jedoch mit:

    make

    make install

    Gentoo Linux ~ VDR 2.6.9 ~ DD Octopus NET V2 S2 Max - SAT>IP ~ LENOVO ThinkServer TS200V ~ Intel(R) Core(TM) i5 CPU680@3.60GHz ~ 16GB RAM ~ NVIDIA T400

  • @all:

    Bitte testen.

    Ich hab jetzt bei meinem PKGBUILD unter Arch für die ffmpeg.conf den Eintrag ergänzt:

    install -Dm644 conf/ffmpeg.conf "$pkgdir/var/lib/vdr/plugins/live/ffmpeg.conf"


    Das Paket baut er mir auch mit der Struktur dass die ffmpeg.conf in dem Verzeichnis var/lib/vdr/plugins/live vorhanden ist, aber er legt mir auch ein Verzeichnis in root an mit plugins/live und dem Inhalt der ffmpeg.conf was vom Makefile kommt den dafür hab ich nichts hinterlegt.


    So sieht der Baum aus:


    Auffällig ist das kein CONFDIR im Makefile definiert ist wie bei anderen Plugins:


    epg2vdr:

    Liegt es daran?

    Gruß utiltiy



    VDR Projects

    Edited 2 times, last by utiltiy ().

  • Ich habe MarkusE schon einen entsprechenden Patch zukommen lassen. Da sind noch ein paar andere Kleinigkeiten drin, weshalb ich ihn lieber von Markus sichten uns ins Git übernehmen lassen möchte.


    Wenn es super dringend ist, kann ich ihn aber auch notfalls hier posten…

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.2 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • OK, Danke - passt schon wenn er das übernimmt ;)

    Gruß utiltiy



    VDR Projects

  • Hi,


    Danke für Eure Tests, und danke Stefan für den Patch.

    Im git ist ein Update, mit dem Patch von Stefan.


    Die Installation mit make install sollte nun ffmpeg.conf nach /etc/vdr/plugins/live/ffmpeg.conf (bei Debian) installieren.

    Sollten wir im Makefile noch einen Link von /var/lib/vdr/plugins/live/ffmpeg.conf nach /etc/vdr/plugins/live/ffmpeg.conf anlegen?

    Macht bei mir der Debian Installer.


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Und jetzt noch eine Frage:


    Was sollen wir tun, wenn die Werte in der setup.conf (alte Einstellungen) von denen in der ffmpeg.conf abweichen?

    Vorschlag:

    - Ausgabe einer Meldung im syslog, mit dem Hinweis, dass die Werte abweichen, und der Bitte ffmpeg.conf zu aktualisieren

    - Verwenden der Werte aus ffmpeg.conf (?).


    Falls die Werte in setup.conf mit denen in ffmpeg.conf übereinstimmen, würde ich die Werten in ffmpeg.conf löschen.


    Was meint ihr?


    ~ Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • shofmann

    Changed the title of the thread from “[live] Streamen von Aufzeichnungen im Browser” to “[live] [merged] Streamen von Aufzeichnungen im Browser”.
  • Im git ist ein Update, mit dem Patch von Stefan.

    Unter Arch passt es jetzt bei mir soweit dass die ffmpeg.conf durch die Zeile im PKGBUILD nach /var/lib/vdr/plugins/live kopiert wird aus dem Quellverzeichnis vom Plugin :thumbup:

    Gruß utiltiy



    VDR Projects

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!