Unterstützen Videoformate Farbprofile?

7

Kürzlich las ich ein Wiki, das einer beliebten Zeichentrickserie gewidmet war, und stieß auf ein interessantes Problem :Frames aus den verschiedenen regionalen iTunes Stores

Von links nach rechts: Bilder aus der US-amerikanischen iTunes-, australischen iTunes- und US-amerikanischen iTunes-Version mit CC in einem Videoplayer

Wie Sie vielleicht sehen, ist es der gleiche Rahmen, aber die Farben sind unterschiedlich. Ich frage mich also: Unterstützt der H.264-Standard / MP4-Container alle Arten von Farbprofilen (wie ICC in JPEG) und wenn ja, unterstützt ihn ein Player? Und was ist mit DVD / Blu-Ray-Disks? Oder gibt es keine Möglichkeit, die gleiche Version eines Videos anzusehen, wie es von den Machern aufgenommen wurde? Vielen Dank. :) :)

Oleg Kuznetsov
quelle

Antworten:

7

Nein, die meisten Videoformate (fast alle) erlauben nicht das Einbetten von benutzerdefinierten ICC-Farbprofilen. (Verbesserung / Korrektur: Bei MP4s können Farbprofile in den Metadaten einer Videodatei markiert sein.) Die meisten Videos auf der Verbraucherseite sind für den Farbraum REC.709 vorgesehen. sRGB ist ähnlich und verwendet dieselben Primärfarben. Das Transcodieren (einschließlich Komprimieren) führt fast immer zu einer leichten Verschiebung der Farbgenauigkeit, Sättigung, Gammakurve oder Schwarz-Weiß-Pegelverschiebung. Dies wird durch die Konvertierung zwischen RGB- und YCbCr-Farbräumen noch verschlimmert.

Nick Spiropoulos
quelle
Ich war mit der ersten Antwort nicht wirklich zufrieden und danke, dass Sie auf Rec.709 gezeigt haben. Deshalb habe ich diese als "akzeptierte" Antwort markiert.
Oleg Kuznetsov
@OlegKuznetsov - Übrigens, Sie müssen keine Antwort akzeptieren, wenn Sie nicht wirklich das Gefühl haben, dass die Frage vollständig beantwortet ist. Es ist vollkommen in Ordnung, wenn Fragen unbeantwortet bleiben, bis eine Antwort gefunden werden kann. Ich bin froh, dass Nicks Antwort hilfreicher war.
AJ Henderson
4

Wie es von seinen Machern gedreht wurde, ist es eine Art nebulöses Konzept, besonders wenn es um Komprimierung geht. Die Farbwiedergabe ist von Gerät zu Gerät sehr unterschiedlich. Ohne ein kalibriertes Display und eine vollständige Kette der Farbsteuerung, die zur Quelle zurückkehrt, werden Sie nicht genau. Selbst dann stehen die Chancen gut, dass irgendwo entlang der Linie die Farbräume nicht genau übereinstimmen.

Bei der Komprimierung wird es noch schwieriger, da die Komprimierung die Farbe beeinflusst. Farben werden durch Komprimierung subtil verallgemeinert. Je mehr Fläche eines Bildes vereinfacht werden kann (insbesondere für Cartoons), desto kleiner kann das Bild sein. Höchstwahrscheinlich ist die leichte Farbstreifenbildung, die in diesem Rahmen zu sehen ist, im Original nicht vorhanden. Da H264 jedoch ähnliche Farben gruppiert und zu einer vereinfacht, führt dies zu einem Streifenbildungseffekt.

Kurz gesagt, für ein verlustbehaftetes Format wird ein Farbprofil das Problem nicht lösen, da die Farbe ohnehin nicht genau erhalten bleibt. Es könnte helfen, es ein wenig zu verbessern, aber es wird immer noch Farbveränderungen durch die Komprimierung geben.

AJ Henderson
quelle
Sie erhalten Banding mit Video-Codecs, wenn Ihre Bitrate zu niedrig ist, aber sie erzeugen nichts wie die systematischen Unterschiede, die Sie sehen, wenn RGB-> yuv eine Formel und yuv-> RGB eine andere verwendet. Sie können in der ursprünglichen Frage den sehr offensichtlichen Unterschied sehen, nachdem Sie die verlustbehafteten komprimierten Bilder aus iTunes dekodiert haben.
Peter Cordes
2

h.264 unterstützt verschiedene Farbinformationen im Bitstream. Von x264 --fullhelp:

--range <string>        Specify color range ["auto"]
                      - auto, tv, pc.
--colorprim <string>    Specify color primaries ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, film, bt2020.
--transfer <string>     Specify transfer characteristics ["undef"]
                      - undef, bt709, bt470m, bt470bg, smpte170m,
                        smpte240m, linear, log100, log316,
                        iec61966-2-4, bt1361e, iec61966-2-1,
                        bt2020-10, bt2020-12.
--colormatrix <string>  Specify color matrix setting ["???"]
                      - undef, bt709, fcc, bt470bg, smpte170m,
                        smpte240m, GBR, YCgCo, bt2020nc, bt2020c.
--chromaloc <integer>   Specify chroma sample location (0 to 5) [0].

Ich glaube nicht, dass Sie ein benutzerdefiniertes Farbprofil einbetten können, aber Sie können angeben, welches Standardprofil der Decoder verwenden soll, um RGB-Pixelwerte zu erzeugen.

Ich dachte, einige Containerformate könnten auch Informationen zu Farbräumen enthalten, aber vielleicht auch nicht.

Peter Cordes
quelle