2016-10-11 3 views
0

Angenommen, ich habe 5 Bilder die sehr ähnlich sind. Ich möchte die Bilder 2, 3, 4 und 5 basierend auf dem ersten Bild komprimieren, ähnlich wie P-Frames aus einem I-Frame generiert werden.Erzeugen eines P-Frames basierend auf einem I-Frame

  • Im Allgemeinen, was ist der beste Weg/Werkzeug, dies zu tun?
  • Zum Beispiel, mit FFMPEG, ist es möglich, P-Frames zu erzeugen und sie in einer separaten Datei zu speichern?

Edit: Obwohl ähnlich, ich bin nicht auf der Suche nach einfach ein Diff zwischen den beiden Bildern zu erzeugen. Mein Ziel ist es, irgendwie die Information im ersten Bild zu verwenden, um die aufeinanderfolgenden Bilder viel kleiner zu machen. Wenn ich einfach ein Diff mache, ist das Diff selbst ungefähr gleich groß (ungefähr 10% reduziert), was nicht so viel ist, wie ich es erwarte. Wenn ich ein MP4-Video mit diesen 5 Frames erzeuge, ist die Videogröße viel geringer als das Setzen von 5 Frames in einer Datei, was wahrscheinlich mit Frame-Vorhersagen auf der Basis der I-Frames geschieht. Gibt es eine Möglichkeit, diese vorhergesagten Frames einzeln zu generieren und einzeln zu speichern?

+0

Sie können den Mischfilter in ffmpeg im Differenzmodus verwenden und das Ergebnis speichern. Dies ist nicht unbedingt P-Frames, aber Sie können das Original erzeugen, indem Sie die Additionsmodus-Mischung durchführen. – Mulvya

+0

Ich überprüfte den Mischfilter. Es scheint verwendet zu werden, um Frames, nicht aufeinanderfolgende Frames zu überlagern. Kannst du bitte ein Beispiel geben? –

+0

Overlaying Frames ist ein Dienstprogramm des Blend-Filters. Das Berechnen von Pixeldifferenzen ist ein anderes. Es ist spät hier, also werde ich morgen ein Beispiel geben. – Mulvya

Antwort

1

Hier ist die grundlegende Syntax:

Sagen wir I.png ist Ihr Grundrahmen und P1.png ist der Rahmen, die Sie von I.png seine Differenz reduzieren wollen

Dann

ffmpeg -i P1.png -i I.png -lavfi blend=all_expr='A-B' D1.png 

erzeugt den Unterschied Rahmen D1.png.

Um P1 von I und D1 zu rekonstruieren, laufen

ffmpeg -i D1.png -i I.png -lavfi blend=all_expr='A+B' P1-r.png 

PI-r.png zu P1.png identisch sein wird.

+0

Danke für den Code, aber das scheint ein einfaches diff von Bildern zu sein, das ich auch mit ImageMagick erreichen konnte. Ich werde die Frage bearbeiten, um zu erklären, wonach ich suche. –

+0

Ja. Wolltest du auch Intra + Inter Vorhersage? – Mulvya

+0

Wahrscheinlich ja, wenn intra + inter Vorhersagen ist, was bewirkt, dass die Videodateien viel kleiner als nur eine Anzahl von Frames zusammen. Gibt es einen Weg, dies mit ffmpeg zu erreichen? Ich habe die Frage bearbeitet, um das besser zu erklären. Vielen Dank. –

Verwandte Themen