Wörterbuch

Was ist ein Pixelformat?

Das Pixelformat ist die Art und Weise, wie ein Video oder Bild die Farbdaten jedes Pixels anordnet. Finde heraus, was Werte wie yuv420p für deine Datei bedeuten.

pixel-format

Das Pixelformat ist das Layout jedes Pixels in den Rohbilddaten eines Bildes oder Videos. Es teilt einem Programm mit, welche Farbkomponenten das Bild hat und wie viele Bits sie verwenden.

Videoberichte zeigen das Feld oft als pix_fmt, mit einem Wert wie yuv420p. Ein solcher Wert gibt das Farbmodell, das Chroma-Subsampling und die Farbtiefe an. Der Farbraum ist ein eigenes Feld.

Welche Dateien sie enthalten

Das FFprobe-Programm von FFmpeg listet pix_fmt für jeden Videostream auf. Dies gilt für MP4-, MOV-, MKV- und WebM-Dateien.

Bilder melden ebenfalls einen Wert. FFmpeg gibt yuvj420p für ein JPEG mit 4:2:0-Sampling und rgb24 für ein 8-Bit-RGB-PNG aus.

Eine Audiodatei mit einem Coverbild kann ebenfalls ein Pixelformat melden. FFmpeg behandelt dieses Bild als Videostream.

ExifTool liest aus Windows-HD-Photo-Dateien (HDP und WDP) ein Tag namens PixelFormat. Es zeigt Werte wie 24-bit RGB und 8-bit Gray an.

Wie die Werte aussehen

FFmpeg baut seine Namen aus kurzen Teilen auf. Der Wert yuv420p10le hat 5 Teile:

  • yuv: das Farbmodell. Y ist Helligkeit, U und V tragen Farbe. U und V heißen auch Cb und Cr, wie in YCbCr.
  • 420: das Sampling. Die Farbdaten haben halbe Breite und halbe Höhe der Helligkeitsdaten.
  • p: planar. Jede Komponente hat eine eigene Ebene. Ein gepacktes Format hält die Komponenten zusammen in einem Array.
  • 10: die Bits pro Komponente. Der Wert yuv420p hat hier keine Zahl und verwendet 8 Bits.
  • le: die Byte-Reihenfolge, Little Endian. Die Endung be bedeutet Big Endian.

Typische Werte

Jede Zahl unten ist die durchschnittliche Bitanzahl pro Pixel in den Rohbilddaten:

  • yuv420p: 12 Bits, Farbe mit halber Breite und halber Höhe
  • yuv422p: 16 Bits, Farbe mit halber Breite
  • yuv444p: 24 Bits, Farbe für jedes Pixel
  • yuvj420p: 12 Bits, das yuv420p-Layout mit dem vollen Bereich, den JPEG verwendet
  • rgb24: 24 Bits, gepacktes Rot, Grün und Blau
  • rgba: 32 Bits, mit zusätzlichem Alphawert für Transparenz
  • gray: 8 Bits, nur Helligkeit
  • pal8: 8 Bits, jeder Wert verweist auf eine Palettenfarbe

Im vollen Bereich reicht die 8-Bit-Helligkeit von 0 bis 255. Im begrenzten Bereich reicht sie von 16 bis 235. FFmpeg empfiehlt ein separates Bereichsfeld statt der yuvj-Namen.

Woher der Wert kommt

Das Programm, das den Stream enkodiert, legt das Pixelformat fest. In FFmpeg wählst du es mit der Option -pix_fmt.

Der Name selbst wird normalerweise nicht in der Datei gespeichert. Das lesende Programm baut den Namen aus den gespeicherten Details zusammen.

Für H.264 verwendet FFmpeg die Farbtiefe und das Chroma-Format im Stream-Header. Für PNG verwendet FFmpeg die Farbtiefe und den Farbtyp im Bild-Header.

Warum das für deine Datei wichtig ist

Das Pixelformat bestimmt die Größe der Rohbilddaten. Ein rgb24-Frame hat 24 Bits pro Pixel, ein yuv420p-Frame 12. Codecs komprimieren diese Daten anschließend, daher ergeben diese Zahlen nicht die endgültige Dateigröße.

Das Pixelformat legt auch fest, wie viele Farbdetails die Datei behält. Das menschliche Auge sieht deutlich mehr Details in der Helligkeit als in der Farbe, daher verursacht 4:2:0 nur wenig sichtbaren Verlust.

Wenn du 4:2:0 in 4:4:4 umwandelst, berechnet ein Programm die fehlenden Samples aus den umliegenden. Die Farbdetails, die 4:2:0 entfernt hat, bleiben verloren.

Das H.264-Profil ist ein weiterer Grund, den Wert zu prüfen. Die Main- und High-Profile unterstützen 8-Bit-Farbe mit 4:2:0-Sampling.

Ein H.264-Stream in yuv444p oder yuv420p10le benötigt ein höheres Profil. Apples HLS-Regeln verlangen H.264 mit einem Profil bis einschließlich High. YouTube empfiehlt das High-Profil mit 4:2:0 für Uploads.