[FIXED] Differenzüberlagerungsfilter ffmpeg wie Photoshop/Affinitätsfoto

Ausgabe

In Photoshop und Affinity Photo gibt es einen netten Überlagerungsfilter, der im Grunde die überlagernde Ebene von der unteren subtrahiert, um eine “Differenzkarte” zu erstellen.

Beispiel: Basisbild:
Screenshot Mario Kart 1

Überlagertes Bild:
Screenshot Mario Kart 2

Ergebnisausgabe:
Diff aus zwei Screenshots

Dies ist ein Beispiel für den Diff, bei dem ein PNG mit einem (glaube ich) komprimierten JPEG-Bild überlagert und dann aufgehellt wird:
Diff generiert aus der Bildkomprimierung

Position des Filters in Photoshop:
Photoshop-Screenshot

Gibt es eine Möglichkeit, dies mit einem Filter in ffmpeg für ein ganzes Video zu erreichen?

Lösung

Okay, ich habe herausgefunden, was wahrscheinlich der beste Weg ist, es zu tun. Es gibt einen ffmpeg-Filter namens Blend, der einige Modi hat, die dafür funktionieren können.

ffmpeg -r VIDEOFPS -i VIDEO -r VIDEOFPS -i VIDEO -lavfi blend=all_mode=grainextract -c:v libx264 -crf 0 -an ./out.mp4

grainextract erzeugt ein graues Video mit nur den Komprimierungsartefakten, dies scheint direkt für diesen Zweck gemacht zu sein.

ffmpeg -r VIDEOFPS -i VIDEO -r VIDEOFPS -i VIDEO -lavfi blend=all_mode=subtract -c:v libx264 -crf 0 -an ./out.mp4

Der Subtraktionsmodus erzeugt aus irgendeinem Grund ein grünes Video, hat aber auch nur die Videokomprimierung.

ffmpeg -r VIDEOFPS -i VIDEO -r VIDEOFPS -i VIDEO -lavfi blend=all_mode=difference -c:v libx264 -crf 0 -an ./out.mp4

Die Differenz scheint extrem nahe an der Subtraktion zu sein, wenn nicht die exakt gleiche Ausgabe.

ffmpeg -r VIDEOFPS -i VIDEO -r VIDEOFPS -i VIDEO -lavfi blend=all_mode=xor -c:v libx264 -crf 0 -an ./out.mp4

xor führt zu einer viel rauschärmeren und kontrastreicheren Ausgabe, eignet sich jedoch hervorragend, um exakte Komprimierungsartefakte in dunkleren oder weniger kontrastreichen Szenen zu sehen

ffmpeg -r VIDEOFPS -i VIDEO -r VIDEOFPS -i VIDEO -lavfi blend=all_mode=phoenix -c:v libx264 -crf 0 -an ./out.mp4

Ich habe Phoenix aus einer Laune heraus genommen, nur weil es cool klang und es tatsächlich für diesen Anwendungsfall funktioniert. Es führt zu einem rosa Video mit nur sichtbaren Komprimierungsartefakten, aber viel weniger definiert als Grainextract, also könnte es genauer sein? idk

Hinweis: Wenn Sie Aufzeichnungen von OBS oder Nvidia ShadowPlay verwenden, MÜSSEN Sie beim Importieren die FPS angeben. Beide verwenden variable FPS, um kleine Schluckaufe und FPS-Unterschiede zu bewältigen, sodass Sie bei Verwendung des Filters eine Reihe zufälliger 1-Frame-Desynchronisierung erhalten


Beantwortet von –
Owen Quinlan


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like