El formato de píxel es la distribución de cada píxel en los datos de imagen sin comprimir de una imagen o un video. Le indica a un programa qué componentes de color tiene la imagen y cuántos bits usa cada uno.
Los reportes de video suelen mostrar el campo como pix_fmt, con un valor como yuv420p. Un valor como este indica el modelo de color, el submuestreo de croma y la profundidad de bits. El espacio de color es un campo aparte.
Qué archivos lo llevan
El programa ffprobe de FFmpeg muestra pix_fmt para cada pista de video. Esto incluye archivos MP4, MOV, MKV y WebM.
Las imágenes también informan un valor. FFmpeg asigna yuvj420p a un JPEG con muestreo 4:2:0 y rgb24 a un PNG RGB de 8 bits.
Un archivo de audio con carátula o portada de álbum también puede informar un formato de píxel. FFmpeg trata esa imagen como una secuencia de video.
ExifTool lee una etiqueta llamada PixelFormat en archivos Windows HD Photo (HDP y WDP). Muestra valores como 24-bit RGB y 8-bit Gray.
Cómo son los valores
FFmpeg forma estos nombres a partir de partes cortas. El valor yuv420p10le tiene 5 partes:
yuv: el modelo de color. Y es el brillo, y U y V llevan el color. A U y V también se les llama Cb y Cr, como en YCbCr.420: el muestreo. El color tiene la mitad del ancho y la mitad de la altura de los datos de brillo.p: planar. Cada componente tiene un plano separado. Un formato empaquetado mantiene los componentes juntos en una sola matriz.10: los bits para cada componente. El valoryuv420pno tiene número aquí y usa 8 bits.le: el orden de bytes, little-endian. La terminaciónbesignifica big-endian.
Valores típicos
Cada número de abajo es el promedio de bits por píxel en los datos de imagen sin comprimir:
yuv420p: 12 bits, color a la mitad del ancho y la mitad de la alturayuv422p: 16 bits, color a la mitad del anchoyuv444p: 24 bits, color en cada píxelyuvj420p: 12 bits, la disposiciónyuv420pcon el rango completo que usa JPEGrgb24: 24 bits, rojo, verde y azul empaquetadosrgba: 32 bits, con un valor alfa adicional para transparenciagray: 8 bits, solo brillopal8: 8 bits, cada valor apunta a un color de la paleta
En rango completo, el brillo de 8 bits va de 0 a 255. En rango limitado, va de 16 a 235. FFmpeg recomienda un campo de rango separado en lugar de los nombres yuvj.
De dónde proviene el valor
El programa que codifica la secuencia decide el formato de píxel. En FFmpeg, lo eliges con la opción -pix_fmt.
El nombre en sí normalmente no se guarda en el archivo. El programa que lo lee construye el nombre a partir de los datos almacenados.
Para H.264, FFmpeg usa la profundidad de bits y el formato de croma de la cabecera de la pista. Para PNG, FFmpeg usa la profundidad de bits y el tipo de color de la cabecera de la imagen.
Por qué es importante para tu archivo
El formato de píxel determina el tamaño de los datos de imagen sin comprimir. Un fotograma rgb24 tiene 24 bits por píxel y un fotograma yuv420p tiene 12. Luego los códecs comprimen estos datos, así que estos números no indican el tamaño final del archivo.
El formato de píxel también determina cuántos detalles de color conserva el archivo. El ojo humano ve muchos más detalles en el brillo que en el color, por lo que 4:2:0 causa muy poca pérdida visible.
Si conviertes de 4:2:0 a 4:4:4, un programa calcula las muestras que faltan a partir de las cercanas. El detalle de color que eliminó 4:2:0 sigue perdido.
El perfil H.264 es otra razón para revisar el valor. Los perfiles Main y High admiten color de 8 bits con muestreo 4:2:0.
Una pista H.264 en yuv444p o yuv420p10le necesita un perfil más alto. Las normas HLS de Apple requieren H.264 en el perfil High o inferior. YouTube recomienda el perfil High con 4:2:0 para las subidas.