[Script] Recording images nachträglich generieren

  • Da mir bei vielen Aufnahmen Bilder fehlen, hab ich mal ein Bash-Script gebastelt, was aus Aufnahmen mittels ffmpeg Bilder extrahiert. Dies kann via reccmds.conf oder als Recording-Hook geschehen.


    Auszuführen mittels: create-thumbs.sh /pfad/zur/Aufnahme.rec


    Ich bin kein Bash-Profi, aber bei mir funktionierts. Verbesserungsvorschläge sind Willkommen.


    Grüsse
    TheChief

    Dateien

    - 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

    5 Mal editiert, zuletzt von TheChief ()

  • Die Länge laut EPG ist nicht die Länge der Aufnahme.
    Ich mache das bei mir so (Die Idee habe ich aber auch teilweise woanderst geklaut): http://projects.vdr-developer.…ata/R10.extrametadata#L14


    Aber ne nette Idee, ich werde die bei Gelegenheit mal hier mit einbauen: http://projects.vdr-developer.…s/thumbnail/R10.thumbnail
    (Wollte ich so wie so bei Gelengheit noch mal weiter ausarbeiten)



    BTW: Als Recording Hook würde ich das in dieser Form nicht empfehlen ;) Weil wenn man in extrecmenu nen Ordner mit 500 Aufnahmen umbenennt rennen dann 500 ffmpeg Prozesse los ;)


    cu

  • Die Länge laut EPG ist nicht die Länge der Aufnahme.


    Ach nicht? Sondern?


    Naja, da ich eh schon ffmpeg bemühe, könnte ich da auch noch die Länge rausziehen:


    Code
    ffmpeg -i "concat:001.vdr|002.vdr" 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,// |awk '{ split($1, A, ":"); print 3600*A[1] + 60*A[2] + A[3] }'


    Mal probieren

    - 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

  • Wobei 6300 in info.vdr sich nicht soviel von 6304.93 laut ffmpeg unterscheidet (vermutlich gerundet). Laut Wiki ist das Feld schon die "Dauer".


    http://www.vdr-wiki.de/wiki/index.php/Info-Datei


    In einer anderen Aufnahme stimmt der Wert aber tatsächlich nicht.


    Hab das Skript am Anfang nochmal korrigiert und neu hochgeladen.

    - 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

  • Das mit der Länge ist in diesem Fall auch nicht so dramatisch, wollts nur der Vollständigkeit halber erwähnen.


    Die Länge in der info[.vdr] ist die Sendungslänge laut EPG, aber dann gibts noch Vor-/Nachlauf oder es wurde dramatisch viel (bei mir gerne von 75 Min. auf 40 Min. bei ner EPG Länge von 60 Min. bei Serienfolgen) Weggeschnitten.


    cu

  • Damit sowas funktioniert


    Code
    find /volume1/vdr/Krimi/Columbo/ -name *.rec -exec create_thumbs.sh {} \;


    Hab ich noch


    RECDIR=$1 in RECDIR=$1/ geändert. Lief tadellos durch.

    - 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

  • Ja eben drum, deswegen fand ich die Aufnahme Infos derzeit etwas nackig, wenn keine Bilder da waren. ;)

    - 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

  • Gibt noch ein Problem. Manchmal gibts es nur eine graue Fläche oder graue Klötzchen in den Bildern. Das könnte man lösen, indem man nur I-Frames rauszieht.


    Also


    Code
    ffmpeg -ss $POSITION -i "concat:$VIDEOFILES" -vf "select=eq(pict_type\,I),yadif=0:-1:0, scale=$WIDTH:$HEIGHT" -frames:v 1 -vsync vfr $OUTPUT 2>/dev/null


    Allerdings braucht das bei 1080i Aufnahmen extremst lange. Gibts da noch ne bessere Möglichkeit?


    Oder könnte man auch Bildchen aus der index(.vdr) rausziehen?

    - 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

  • Oder könnte man auch Bildchen aus der index(.vdr) rausziehen?


    Zumindest bekommst du dort alle Framenumern der I-Frames. D.h. du must die nicht suchen sondern kannst die direkt anspringen wenn das mit ffmpeg geht.


    cu

  • Hab jetzt eine andere Lösung gefunden.


    ffmpeg -ss $POSITION -i "concat:$VIDEOFILES" -ss 30 -vf "scale=$WIDTH:$HEIGHT,yadif=0:-1:0" -frames:v 1 ${OUTPUT} 2>/dev/null


    Anscheinend sucht er dann bis zu 30 Sekunden nach einem Keyframe: http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg Konnte keine grauen Pixel/Flächen mehr feststellen.


    Muss aber dennoch nochmal schauen, denn bei zwei Filmen (bisher) werden garkeine Bilder erzeugt.


    Desweiteren will ich noch die Aspect Ratio rausziehen, denn manche Filme haben eine merkwürdige Auflösung (480x576) und dann funktioniert HEIGHT=-1 nicht.


    Es entwickelt sich :D

    - 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

  • Inzwischen ziehe ich mir auch die Aspect Ratio raus und berechne damit und aus der Breite die Bildhöhe. Wäre nur noch zu klären, warum es bei manchen Filmen nicht geht.


    Im Log sehe ich dann: [mpegts @ 0x1b8fc80] PES packet size mismatch

    - 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

  • Ich hab das Skript jetzt noch soweit angepasst, dass Bilder im Format 525x400 rauskommen. Voraussetzung ist jetzt ffmpeg und imagemagick. Im Anhang mal die Resultate von Carrie.

Jetzt mitmachen!

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