Erstellen Sie ein Timelapse-Video mit Frame-Integration mit ffmpeg

1093
ybungalobill

Ich habe ein Echtzeit-Video mit 30 Bildern pro Sekunde und möchte es in ein Video mit 30 Bildern pro Sekunde mit Zeitraffer konvertieren, so dass jedes Bild des Zielvideos das Ergebnis des arithmetischen Mittelwerts von 10 Originalbildern in einem linearen Farbraum ist. Ich habe daran gedacht, den framerateFilter zu verwenden, aber er ist nur für die Interpolation von Frames gedacht, wenn die Framerate erhöht wird. Wenn ich die Framerate reduziere, fallen einfach 9/10 der Frames ab, was dazu führt, dass sich schnell bewegende Objekte ruckartig bewegt werden, anstatt eine schöne glatte Bewegungsunschärfe.

Wie kann man das mit der Befehlszeile ffmpeg erreichen?

1
Prüfen Sie, ob Sie die grundlegende Methode anpassen können [hier] (http://video.stackexchange.com/q/16552/1871). Gyan vor 8 Jahren 0
Ich bin mir nicht sicher, was genau es macht, dass es einfacher wäre, direkt mit libav in C zu schreiben ... ybungalobill vor 8 Jahren 0
Jeder Frame in der Ausgabe ist der Mittelwert von 4 Frames, dh Ausgangsframe 1 = Mittelwert der Eingaberahmen 1, 2, 3, 4, Ausgangsframe 2 = Mittelwert der Eingaberahmen 5,6,7,8 ... Gyan vor 8 Jahren 0
@ Mulvya Das ist offensichtlich, aber in welchem ​​Farbraum funktioniert es? Für schöne Bewegungsunschärfe ist es wirklich wichtig. Außerdem wird mich das nicht über die zwei möglichen Faktoren hinausbringen. ybungalobill vor 8 Jahren 0
Es führt eine Arithmetik auf die Werte als dekodiert aus. Wenn diese Gamma-gewichtet sind, ist dies auch das Ergebnis. Wenn Sie einen linearen Raum wünschen, können Sie zuvor eine Änderung des Pixelformats (mit erweiterter Tiefe) vornehmen und dann die [lut] verwenden (https://ffmpeg.org/ffmpeg -all.html # lut_002c-lutrgb_002c-lutyuv) oder andere anwendbare Filter und Gamma einstellen. Gyan vor 8 Jahren 0

0 Antworten auf die Frage