Ich versuche, das von meiner Capture-Karte aufgenommene Video zu verarbeiten. Dazu werden die Videoframes irgendwann als PNG-Bilder gespeichert. Das Problem ist, FFmpeg verschiebt die Chroma-Ebenen ~ 2px nach rechts, wenn Sie von YUV nach RGB konvertieren. Dies fügt der bereits vorhandenen Schicht, die meine Erfassungskarte einführt, hinzu und macht sich bemerkbar. Ich habe die sws_flags-Lösung ausprobiert, aber sie behebt nur die Blockierung. Ich habe auch versucht, das Video vor der Konvertierung horizontal umzudrehen, in der Hoffnung, dass es die Verschiebungsrichtung umkehren würde, jedoch ohne Wirkung.
Ich muss also beide kompensieren und das Chroma nach links verschieben. Ich habe Beispiele für die Verwendung von overlay filter_complex gesehen , die das gesamte Video verschoben hat, sowie die Extraktion der Chroma-Ebenen über lut_yuv, aber ich kann nicht herausfinden, wie man nur die Chroma-Ebene verschiebt. Es scheint auch keinen "Chroma" -Modus im Mischfilter zu geben, der es mir erlaubt hätte, Chroma durch seine modifizierte Version zu ersetzen.
Das Chroma wird auf volle Größe hochskaliert, dann werden die einzelnen Ebenen extrahiert. In den geqFiltern, die auf die U- und V-extrahierten Ebenen angewendet werden, wird der Wert jedes Pixels von dem Pixel rechts davon übernommen. Dadurch gehen die ursprünglichen Werte der ganz linken Pixelspalte verloren. Schließlich werden das ursprüngliche Luma und die bearbeiteten Chroma-Ebenen zusammengeführt. Mit etwas Versuch und Irrtum sollten Sie die Offsets richtig machen können.