Frame aus Video extrahieren

  • Moin,

    Vorab: Ich habe mich noch nicht näher mit dem Thema befasst und noch nichts ausprobiert. Das hier ist nur ein Thread in dem ich nachfrage ob jemand schonmal soetwas gebastelt hat, damit ich mir die Mühe ggf. sparen kann (wozu das Rad ein 10tes Mal erfinden).

    Es geht um folgendes:

    Ich suche eine Funktion (am besten in AutoIt gewrappt) die mit einem frei zugänglichen Decoder (z.B. ffmpeg) einen Frame (Angabe als Integer, Frame 0 = erster Frame des Videos) aus einer Videodatei dekodiert und in eine Struct legt (kein Dump auf die Festplatte), sodass man anschließend Zugriff auf die Pixeldaten hat. Dabei sollten verschiedene container (mp4, mov, avi, mkv, usw) sowie verschiedene interne Formate (VP9, h264, h265, usw) unterstützt werden. Schön wäre auch wenn man die Videodatei (die ggf ziemlich groß ist) nicht jedes Mal neu einlesen muss, sondern laden kann und dann beliebige Frames herausziehen kann.

    Ich weiß dass das möglich ist und villeicht hat ffmpeg sogar schon eine vorgefertigte Funktion für genau dieses Szenario (auf die Schnelle habe ich aber nur eine Funktion die den Frame auf die Platte schreibt gefunden).

    Ziel der Aktion:

    Ich möchte eine Methode basteln um "bessere" Screenshots von Videos machen zu können (dabei geht es vorallem um selbst aufgenommene Videos via Handy/Kamera usw). Leider ist da immer starkes Rauschen (insbesondere auf Pixelebene) involviert. Wenn man aber z.B. 5 Frames in Folge verwendet (vorausgesetzt Objekt und Kamera bewegen sich nicht viel) könnte man mit minimaler Bewegungskorrektur + Mittelwertbildung ein besseres Bild erhalten, als wenn man von den 5 Frames einfach den Mittleren auswählt.

    Daher die Frage: Hat das schonmal jemand gemacht und gibt es villeicht bereits eine gewrappte AutoIt Version?

    lg

    Mars

  • Frames ohne Umweg über die Festplatte:

    lgE

  • Ich habe mich tatsächlich auch nach ein paar Tagen hingesetzt und versucht etwas zusammenzubauen. Leider ist das nichts geworden weil ich einen Klotz im Kopf hatte. Dachte ich muss eine Struct erstellen und irgendeinen Weg finden ffmpeg zu sagen wohin es den Frame dekodieren soll (so nach dem Motto: Hier hast du eine Adresse, schreib!). Std und CMDlines sind für mich ein Buch mit sieben Siegeln (dicht gefolgt von RegEx). Ich bedanke mich vielmals, dass du das Problem für mich gelöst hast. :part:

    lg

    M