Einige Mobiltelefone sind in der Lage, schwache Lichtverhältnisse auszugleichen, indem sie alle zwei oder mehr Bilder in einem integrieren. Das Ergebnis ist ein Video mit variabler Framerate, bei dem jedes Bild seinen eigenen Zeitstempel hat. Diese Art von Filmmaterial zeigt korrekt beleuchtete Motive, aber Sie bemerken den Rückgang der Bildrate, weil die Bewegung nicht flüssig ist und die Bilder auch verrauschter werden (weil Sie auch das von der Elektronik erzeugte Rauschen hinzufügen). Jedenfalls erscheint es mir wie ein technisches Wunderwerk, wenn man bedenkt, dass die Eintrittspupille solcher Geräte nicht größer als 1 mm im Durchmesser sein darf.
Angenommen, Sie haben das Telefon gezwungen, mit einer festen Bildrate aufzunehmen (z. B. 1280 x 720p30 mit OpenCamera in Android). Es sollte möglich sein, beispielsweise 30p in 15p umzuwandeln, indem die in den entsprechenden Pixeln von jeweils zwei Frames gespeicherten Werte zu einem addiert werden. Ich weiß, dass dieser Vorgang möglich ist, weil er in anderen Zusammenhängen üblich ist, zB bei astronomischen Bildern.
Meine Tools sind ffmpeg und Blender. Ich wäre dankbar, wenn jemand die Antwort auf diese Tools beschränken könnte, obwohl andere Lösungen auch willkommen sind, weil sie mich auf die richtige Spur bringen könnten, um nach geeigneten Alternativen zu suchen.
Wie Sie anmerken, verringert das Hinzufügen (Integrieren) jedes Paares benachbarter Frames, um einen neuen Frame zu erstellen, die Framerate.
Wenn Sie jedoch nur benachbarte Frames integrieren möchten, sollten Sie das Video in eine separate Timeline duplizieren, die um genau einen Frame verschoben ist. Wenn Sie diese beiden Streams integrieren, erhalten Sie ein neues Video mit derselben Bildrate, aber insgesamt um ein Bild kürzer.
Alle anderen genannten Probleme könnten auftauchen, aber zumindest würde sich die Bildrate nicht ändern.
Meine eigene, nicht ganz zufriedenstellende Antwort, die hilfreich sein könnte:
Diese sehr einfache Zeile macht den Trick:
ffmpeg -i input vf "tblend=addition,framestep=2" {encoding options} output
Z.B
ffmpeg -i input.mp4 -vf "tblend=addition,framestep=2" -c:v libx264 -crf 16 -c:a copy output.mp4
input.mp4 hatte eine variable Framerate <=30, wohingegen output.mp4 15 fps hat. Ich hätte eine konstante Bildrate für die Ausgabedatei angeben können, z
ffmpeg -i input.mp4 -vf "tblend=addition,framestep=2" -c:v libx264 -r 30 -crf 16 -c:a copy output.mp4
Ich werde meine eigene Antwort nicht akzeptieren, da das Ergebnis dieses Prozesses eine hässliche Überlagerung der sich bewegenden Objekte zwischen aufeinanderfolgenden Frames ist, sodass eine Art adaptives Weichzeichnen erforderlich ist. Daher lasse ich die Frage offen, ob jemand eine bessere Lösung finden kann.
Mit Physik! Alles, was Sie tun müssen, ist zunächst mit 15 Bildern pro Sekunde aufzunehmen und eine Verschlusszeit von 1/15 Sekunde (auch bekannt als 360-Grad-Verschlusswinkel) zu verwenden. Dies macht effektiv dasselbe wie das Kombinieren von zwei 1/30-Sekunden-Frames mit 30 fps mit Software, es tut es einfach, indem es das Licht überhaupt doppelt so lange auf den Sensor trifft. Keine ausgefallene Mathematik oder Berechnungen erforderlich!
Benutzer24601
Jim Mack