[live] Patch für Recording Images

  • Ich war mal so frei und hab einen Patch für Aufnahmebilder in Live erstellt.


    Klickt man eine Aufnahme an, wird nach allen Bilder vom Typ jpg oder png im Aufnahmeordner gesucht und jeweils ein Symlink der Bilder in /tmp angelegt, damit das mit den URL-Mapping (tntnet) funktioniert. Da ich mich nicht wirklich mit CPP auskenne, könnte man an dieser Stelle eine Funktion benutzen, um den temporären Pfad zu ermitteln. Im Moment ist /tmp statisch einprogrammiert.


    Hab noch einen Screenshot angehängt.


    Bin auf ein Feedback gespannt!


    Grüsse
    TheChief

    Images

    Files

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    The post was edited 6 times, last by TheChief ().

  • Braucht keiner? :D


    Eventuell kann ein Mod den Thread mal in die Developer-Rubrik verschieben.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Braucht keiner? :D


    Gibt Zeit zum testen ;) Kommt auf alle Fälle lokal bei mir ins live rein.



    BTW: Wäre es nicht möglich das Bild nach dem Vorbild von pages\screenshot.ecpp auszuliefern? Als Parameter recid und Bildnummer.


    cu

  • Was meinst du? Was macht screenshot.ecpp? Bin grad nicht am Rechner.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Was meinst du? Was macht screenshot.ecpp? Bin grad nicht am Rechner.


    Das unter /pages ist ja quasi wie php, die screenshot.ecpp steht später unter http://<vdr-ip>/screenshot zur Verfügung. D.h. der Aufruf der Adresse http://<vdr-ip>/screenshot liefert den aktuellen Screenshot als JPG, weil in der screenshot.ecpp halt der Code ist der die JPG Daten ausgibt.


    Die Idee war halt das dann auch unter http://<vdr-ip>/recimage?recid=<recid>&filename=cover-1.jpg die Bilder kommen könnten.
    Mein Problem ist nur das ich nicht weiss wie ich die notwendigen Infos in diese Datei bekomme, d.h. wie ich in der neuen recimage.ecpp von der recordid auf den Verzeichnisnamen für diese Aufnahme komme. Da kommen haltmeine Kenntnisse so an die Grenzen.


    Die /tmp Lösung ist irgendwie nicht schön, aber da ichs nicht besser könnte will ich da nicht wirklich mekkern, das war nur so als Anregung falls du noch nicht in dieser Richtung geschaut hattest und Lust hast da noch was zu machen.


    cu

  • Ja, das ist irgendwie die Schwierigkeit des ganzen.Deswegen bin ich erstmalden Wegüber /tmp gegangen.


    Im Moment könnte man auch die RecordingImages über http://<ip>:8008/recimages/cf7b32531a791b311b8669818e7ef0e3/thumbnail_0.jpg erreichen. Ich hätte auch gern die ID durch irgendwas eindeutiges ersetzt. Was würdet Du Dir denn wünschen?


    Der Hash ist übrigens MD5 vom Aufnahme-Ordner, eventuell hilft das ja?!


    http://<ip>:8008/recimages/Name_der_Aufnahme/thumbnail_0.jpg ? http://<ip>:8008/recimages/epgid/thumbnail_0.jpg mit der epgid aud der info?


    Grüsse
    TheChief

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Im übrigen geht "screenshot" bei mir nicht, warum eigentlich? Da steht bei mir nur "...kann nicht angezeigt werden, da sie Fehler enthält...." Muss ich mal untersuchen.


    Auf meinem Server gibts eigentlich ja kein PrimaryDevice? Da läuft nur dummydevice im Moment, was vemutlich kein Grab bietet. Wie krieg ich das gelöst?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Auf meinem Server gibts eigentlich ja kein PrimaryDevice? Da läuft nur dummydevice im Moment, was vemutlich kein Grab bietet. Wie krieg ich das gelöst?


    Du brauchst irgendwas was die Funktion "GrabImage" bietet. D.h. "svdrpsend grab" muss funktionieren, da kommst du nicht drumherrum. Evtl. hilft irgendein Ausgabeplugin was einfach keine Ausgabe macht?


    Wobei es eher sinnfrei ist da nen Plugin laufenzulassen was dauerhaft decodiert (nur für den Live Video Hintergrund). mini73 hat in sein dbus2vdr Plugin nen OSD Provider eingebaut, evtl. hat er ja Lust da noch nen GrabImage dazuzupacken? Fage doch einfach mal, evtl. ist der Aufwand garnicht so hoch (das OSD als PNG ausliefern ist eh schon drin) und er hat Lust dazu?
    Für Headless Server wäre das ja ideal so per live zum Remote OSD zu kommen. Irgendein Live Video dahinter ist ja hier eh nicht so wichtig.



    BTW: Ich habe gestern auch nochmal versucht das mit dem /tmp loszuwerden, habs aber nicht hinbekommen. C ist einfach nicht meine Welt ;)


    cu

  • Zum Thema grab:


    Ich hab sowohl xine (mit grab patch) als auch xineliboutput mal installiert. Dennoch geht die grab Funktion nicht. svdrpsdend GRAB - liefert auch nur "failed". Die xine-lib ist auch mit den df-extensions installiert.


    Zum Live-Plugin:


    Das Probem mit /tmp ist eben das URL Mapping in tntconfig.cpp


    Die epgimages zum Beispiel liegen immer in einem festen Ordner, schau Dir mal die Zeilen mit MapUrl /epgimages usw. an. Dort werden die Bilder quasi gelesen und per Content-Type: image/xxx ausgegeben.


    Bei den recordingimages ist der Pfad aber nichts fix, d.h. man müsste irgendwie den Pfad mit übergeben. Da hab ich mir auch die Zähne ausgebissen, so dass ich dann einfach die Bilder nach /tmp kopiert habe. Alternativ könnte man auch in /var/cache/vdr/recimages symlinks "on-the-fly" anlegen und dann auf diese zugreifen?! Könnte auch anstatt der Kopie in /tmp Symlinks anlegen.


    Grüsse
    TheChief


    EDIT: Was im Übrigen auch noch cool wäre: Eine Zoom Funktion für die EPG Bilder, vielleicht mittels lightbox oder so.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    The post was edited 1 time, last by TheChief ().

  • Hab noch ein Problem in meinem Patch entdeck und bräuchte mal Hilfe:


    Code
    1. char cmdBuff[400];
    2. sprintf(cmdBuff,"cp %s %s",imagefile.c_str(),tmpfile.c_str());
    3. system(cmdBuff);


    Das ganze meldet "sh: Syntax error: Unterminated quoted string" bei "Das_Boot_-_Director's_Cut". Ich nehme an, wegen dem Apostroph im Ordernamen. Müsste also den ganzen String vor dem kopieren noch
    escapen. Gibts da im CPP ne Funktion für? Ich such auch schon, aber vielleicht ist ja jemand von Euch schneller.


    Grüsse
    TheChief

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Fehlt nicht auch wegen evtl. vorhandener Leerzeichen?
    ----
    "cp '%s' '%s'"
    ----


    Fürs Escapen würde ich mal beim VDR selber schauen. Der hat auch einige generische Systemaufrufsfunktionen.


    cu

  • Leerzeichen sollte es ja eigentlich nicht geben, oder doch?


    Habs trotzdem mal eingebaut.


    Code
    1. char cmdBuff[400];
    2. sprintf(cmdBuff,"cp \"%s\" \"%s\"",imagefile.c_str(),tmpfile.c_str());
    3. system(cmdBuff);

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Leerzeichen sollte es ja eigentlich nicht geben, oder doch?


    Das ist AFAIK undefiniert ob erlaubt oder nicht. Zumindest der 1.6er VDR hat keine Probleme mit Leerzeichen im Videodirectory.


    cu

  • In recording.c hab ich sowas gefunden:


    *strescape(RecordingFileName, "\\\"$")


    Mal sehn, obs damait klappt.


    EDIT: Anbei die gefixte Version.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    The post was edited 2 times, last by TheChief ().

  • Da ich jetzt mehr als ein EPG Bild nutze und dieses auch für Aufnahmen speichere, habe ich meinen Patch mal überarbeitet.


    Das Plugin erwartet jetzt als Parameter "--recimagetype=jpg" oder "--recimagetype=png" je nach dem, in welchem Format die Bilder vorliegen.


    Also zum Beispiel


    Code
    1. -P'live --ip=1.2.3.4 --port=8008 --epgimages=/var/cache/vdr/tvm2vdr/epgimages --recimagetype=jpg' \


    Beim Aufruf einer Aufnahme werden alle Bilder im Aufnahmeverzeichnis mit dem eingestellten Typ gelesen und Symlinks nach /tmp erstellt.


    Grüsse
    TheChief

    Images

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

    The post was edited 1 time, last by TheChief ().

  • Hi


    Ich schaue mir den Patch gerade näher an.

    Da ich jetzt mehr als ein EPG Bild nutze und dieses auch für Aufnahmen speichere, habe ich meinen Patch mal überarbeitet.


    Das Plugin erwartet jetzt als Parameter "--recimagetype=jpg" oder "--recimagetype=png" je nach dem, in welchem Format die Bilder vorliegen.

    Kannst Du mir den Hintergrund für diese Festlegung beim Start des VDR nennen?
    Ich könnte mir vorstelllen, dass diese Einstellung nur im LIVE-Setup vorgenommen wird und nicht über die Kommandozeile übergeben werden muss.


    Wie werden die Recording Images initial erstellt? Welches Plugin/Program etc. kümmert sich darum? Sind dessen Einstellungen (z.B. welches Imageformat verwendet wird) irgendwie auslesbar? Was ist, wenn sowohl jpg und png Images vorhanden sind (kann es vorkommen)?


    Grüße
    Tadi

  • Theoretisch könnte man --recimagetype auch weglassen und alle Bilder lesen. Die Aufnahme Bilder liegen bei mir aber generell in jpg vor und kommen von tvm. Sind quasi die EPG Bilder, die per recording-hook ins Aufnahme-Verzeichnis kopiert werden.


    Ich hab aber auch noch ein Skript erstellt, was aus den Aufnahmen per ffmpeg Thumbnails generieren kann und diese im Aufnahmeverzeichnis abglegt. Auch diese werden als jpg abgelegt.


    Ansonsten bin ich natürlich für Änderungen offen. :) /tmp ist auch noch fest Programmiert, wo die Symlinks erstellt werden. Da gibts sicher auch noch eine System-Funktion, um den Temp-Ordner zu ermitteln.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Ansonsten bin ich natürlich für Änderungen offen. :) /tmp ist auch noch fest Programmiert, wo die Symlinks erstellt werden. Da gibts sicher auch noch eine System-Funktion, um den Temp-Ordner zu ermitteln.


    Die /tmp Sache sollte man generell weglassen, die ist fürchterlich ;)
    Aber falls es wirklich nicht anderst geht dann wäre ich für einen Kommandozeilenparameter für /tmp, weil ich würde das gerne auf meine ramdisk legen.


    Wobei das kein Meckern ist, ich hatte mir damals den Patch auch angesehen und es mangels generellen live Codeverständnis auch nicht "besser" hinbekommen. Aber es sollte eine Möglichkeit geben die Images direkt zu nutzen (würde mch jedenfalls wundern wenn es nicht ginge).


    cu

  • Problem war halt, dass jede Aufnahme einen anderen Ordner hat und die müsste man alle tntnet fürs UrlMapping mitteilen. Daher einfach symlinks nach /tmp erstellt. Wege gibts sicher viele. Aber per Kommandoparemeter könnte das durchaus noch machen, vielleicht --recimagecachedir=/tmp Weiss aber nicht, ob bei Symlinks die Bilder dann in der Ramdisk landen oder nur der symlink.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Problem war halt, dass jede Aufnahme einen anderen Ordner hat und die müsste man alle tntnet fürs UrlMapping mitteilen. Daher einfach symlinks nach /tmp erstellt. Wege gibts sicher viele. Aber per Kommandoparemeter könnte das durchaus noch machen, vielleicht --recimagecachedir=/tmp Weiss aber nicht, ob bei Symlinks die Bilder dann in der Ramdisk landen oder nur der symlink.

    Naja, das Aufnahme-Streaming funktioniert ja auch ohne die an unterschiedlichen Orten liegenden Aufnahmen vorher in einen /tmp Ordner zu verlinken. Das Verlinken nach /tmp wollte ich beim übernehmen des Patches abschaffen.


    D.h. das beste ist eine Einstelloption, wie die Bilder im Aufnahmeordern 'entdeckt' werden: Im Grunde eine Dateisuchmaske, deren default auf PNG und JPG Bilder zeigt. Dann müssen Neulinge wahrscheinlich nichts selber umstellen. Das erübrigt dann auch spezielle Startparameter für diese Option, sowohl für die Art der Bilder sowie wo sie zu finden sind.


    Grüße
    Tadi