Dictionnaire

Qu’est-ce qu’un format de pixel ?

Le format de pixel est la façon dont une vidéo ou une image organise les données de couleur de chaque pixel. Découvrez ce que signifient pour votre fichier des valeurs comme yuv420p.

pixel-format

Le format de pixel est l’agencement de chaque pixel dans les données d’image brutes d’une image ou d’une vidéo. Il indique à un programme quels composants de couleur l’image contient et combien de bits chacun utilise.

Les rapports vidéo affichent souvent ce champ sous le nom pix_fmt, avec une valeur comme yuv420p. Une valeur de ce type indique le modèle de couleur, le sous-échantillonnage de chrominance et la profondeur de bits. L’espace colorimétrique se trouve dans un champ séparé.

Quels fichiers le portent

Le programme ffprobe de FFmpeg liste pix_fmt pour chaque flux vidéo. Cela couvre les fichiers MP4, MOV, MKV et WebM.

Les images indiquent aussi une valeur. FFmpeg donne yuvj420p à un JPEG avec un échantillonnage 4:2:0 et rgb24 à un PNG RVB 8 bits.

Un fichier audio avec une pochette peut également indiquer un format de pixel. FFmpeg traite cette image comme un flux vidéo.

ExifTool lit une balise appelée PixelFormat dans les fichiers Windows HD Photo (HDP et WDP). Elle affiche des valeurs comme 24-bit RGB et 8-bit Gray.

À quoi ressemblent les valeurs

FFmpeg construit ces noms à partir de petites parties. La valeur yuv420p10le comporte 5 parties :

  • yuv : le modèle de couleur. Y est la luminance, et U et V portent la couleur. U et V sont aussi appelés Cb et Cr, comme dans YCbCr.
  • 420 : l’échantillonnage. La couleur a la moitié de la largeur et la moitié de la hauteur des données de luminance.
  • p : planaire. Chaque composant a un plan séparé. Un format empaqueté garde les composants ensemble dans un seul tableau.
  • 10 : le nombre de bits pour chaque composant. La valeur yuv420p n’a pas de nombre ici et utilise 8 bits.
  • le : l’ordre des octets, little-endian. La terminaison be signifie big-endian.

Valeurs typiques

Chaque nombre ci-dessous est la moyenne de bits par pixel dans les données d’image brutes :

  • yuv420p : 12 bits, couleur à la moitié de la largeur et de la hauteur
  • yuv422p : 16 bits, couleur à la moitié de la largeur
  • yuv444p : 24 bits, couleur pour chaque pixel
  • yuvj420p : 12 bits, le format yuv420p avec la plage complète utilisée par JPEG
  • rgb24 : 24 bits, rouge, vert et bleu empaquetés
  • rgba : 32 bits, avec une valeur alpha ajoutée pour la transparence
  • gray : 8 bits, luminance uniquement
  • pal8 : 8 bits, chaque valeur pointe vers une couleur de la palette

En pleine plage, une luminance sur 8 bits va de 0 à 255. En plage limitée, elle va de 16 à 235. FFmpeg recommande un champ de plage séparé plutôt que les noms yuvj.

D'où vient la valeur

Le programme qui encode le flux décide du format de pixel. Dans FFmpeg, vous le choisissez avec l’option -pix_fmt.

Le nom lui-même n’est en général pas stocké dans le fichier. Le programme de lecture construit ce nom à partir des détails enregistrés.

Pour le H.264, FFmpeg utilise la profondeur de bits et le format de chrominance dans l’en-tête du flux. Pour le PNG, FFmpeg utilise la profondeur de bits et le type de couleur dans l’en-tête de l’image.

Pourquoi cela est important pour votre fichier

Le format de pixel détermine la taille des données d’image brutes. Une image rgb24 a 24 bits par pixel et une image yuv420p en a 12. Les codecs compressent ensuite ces données, donc ces nombres ne donnent pas la taille finale du fichier.

Le format de pixel détermine aussi la quantité de détails de couleur conservés. L’œil humain voit beaucoup plus de détails en luminance qu’en couleur, si bien que le 4:2:0 entraîne peu de perte visible.

Si vous convertissez du 4:2:0 en 4:4:4, un programme calcule les échantillons manquants à partir des voisins. Les détails de couleur supprimés par le 4:2:0 restent perdus.

Le profil H.264 est une autre raison de vérifier cette valeur. Les profils Main et High prennent en charge la couleur 8 bits avec un échantillonnage 4:2:0.

Un flux H.264 en yuv444p ou yuv420p10le nécessite un profil plus élevé. Les règles HLS d’Apple exigent du H.264 au profil High ou inférieur. YouTube recommande le profil High avec un échantillonnage 4:2:0 pour les envois.