FFMPEG prores_ks 4444 Farbverschiebung

Ich versuche, "ProRes 4444"-Filme mit ffmpeg zu codieren. Einige Recherchen führten mich zum Encoder "prores_ks", der der einzige der prores-Encoder von ffmpeg ist, der "4444" unterstützt.

Ich habe diesen Befehl verwendet, um es auszuprobieren (Eingabe ausgeschlossen):

-c:v prores_ks -f mov -profile:v 4444 test.mov

Dadurch wird ein ProRes 4444-Film erstellt. Die Farben erscheinen jedoch dunkler als die ursprüngliche Eingabe. Nach einiger Recherche bin ich auf diese Option gestoßen:

-vf colormatrix=bt601:bt709

Das Hinzufügen dieses Filters scheint das Problem zu beheben. Die Dateigröße ist jedoch aus irgendeinem Grund erheblich größer. Außerdem mag ich die Idee nicht, dass während dieser Codierung ein Filter durchgeführt werden muss, da ich die höchstmögliche Qualität haben möchte. Kennt jemand eine Möglichkeit, diese "Farbverschiebung" ohne Videofilter zu überwinden?

Der Farbmatrixfilter funktioniert nur in 8-Bit und Sie sollten ihn sowieso nicht verwenden.
Was sind auch Eingabeeigenschaften, wie zum Beispiel welcher Farbraum?
Die Eingabe ist eine PNG-Sequenz.
Welche Bittiefe, könntest du irgendwo ein Bild hochladen?
Ich habe sowohl 8 als auch 16 Bit aus After Effects ausprobiert. Hier ist ein PNG und ein MOV, die mit ffmpeg erstellt wurden, mit dem Befehl ffmpeg -r 24 -i colorbars_8bit.png -c:v prores_ks -profile:v 4444 colorbars_prores_ks.mov: file.io/SeKH8I
Interessanterweise scheint das "WriteFFmpeg"-Modul von Natron dieses Problem nicht zu haben.

Antworten (1)

Ich glaube, das Problem liegt darin, wie FFMPEG standardmäßig die RGB-> YUV-Konvertierung durchführt. Diese Option gibt die Verwendung des bt709-Farbraums für die Konvertierung anstelle des Standardfarbraums bt601 an. Dies behebt es für mich - aber lassen Sie es mich bitte wissen, wenn ich hier etwas Schlechtes mache!

-vf scale=out_color_matrix=bt709
709 ist Standard für HD, 601 für SD.