¿Qué es el video de 8 bits?

El video de 8 bits almacena cada componente de color de cada muestra como un entero de 8 bits, lo que proporciona 256 valores de código posibles por componente. Es la única profundidad de bits de VP8 y de los perfiles Constrained Baseline, Main y High de H.264, mientras que ITU-R BT.2100 especifica sus señales HDR con valores enteros a 10 o 12 bits.

Cómo funciona el video de 8 bits

La profundidad de bits es el número de bits utilizados para cuantizar cada componente de una muestra. Ocho bits proporcionan 256 códigos, pero el rango de la señal determina cuáles representan la imagen. ITU-R BT.709, el estándar HDTV, sitúa el negro en el código 16 y el blanco máximo nominal en 235 para la luma y R′G′B′, centra los componentes de diferencia de color en 128 dentro del intervalo de 16 a 240 y reserva 0 y 255 para referencias de sincronización; el video de rango completo utiliza en cambio de 0 a 255. El encoding de 10 bits del mismo estándar va de 64 a 940, con cuatro incrementos por cada incremento de 8 bits, y ese espaciado más amplio de 8 bits explica por qué los degradados pueden mostrar bandas visibles por debajo de 10 bits por componente. El submuestreo de crominancia y el rango se eligen por separado de la profundidad de bits: un formato de píxel designa una combinación de profundidad de bits y disposición de crominancia, un perfil de códec limita qué combinaciones puede usar un flujo y el rango normalmente se indica mediante una etiqueta independiente. HDR es la excepción a esa libertad: BT.2100 define señales PQ y HLG con valores enteros únicamente a 10 o 12 bits.

Datos clave

  1. Que un código de 8 bits signifique negro, blanco o ninguno de los dos depende del rango de la señal. En el rango limitado (TV o MPEG), el negro de luma es 16 y el blanco nominal es 235, con valores de diferencia de color de 16 a 240; en el rango completo (PC o JPEG), la escala va de 0 a 255. El video de rango limitado interpretado como rango completo pierde contraste, porque el negro y el blanco se sitúan en 16 y 235 en lugar de 0 y 255, por lo que debes mantener la etiqueta de rango coherente con las muestras durante cada conversión y actualizarla siempre que una conversión cambie el rango. YouTube, por ejemplo, convierte las subidas de rango completo a rango limitado.
  2. Un perfil de códec limita qué profundidades de bits y formatos de crominancia puede usar un flujo. Los perfiles Constrained Baseline, Main y High de H.264, HEVC Main, VP9 Profile 0 y VP8 están limitados a 8 bits con crominancia 4:2:0 (H.264 High también permite video monocromático), por lo que los dos códecs de video que todo navegador WebRTC debe implementar, VP8 y H.264 Constrained Baseline, solo admiten 8 bits. El formato 4:2:0 de 10 bits necesita un perfil superior, como H.264 High 10, HEVC Main 10 o VP9 Profile 2, y los formatos 4:2:2 o 4:4:4 de 8 bits necesitan perfiles como H.264 High 4:2:2, H.264 High 4:4:4 Predictive o VP9 Profile 1. H.264 High 10 y HEVC Main 10 también admiten video de 8 bits, por lo que el nombre de un perfil por sí solo no determina la profundidad de bits.
  3. La transcodificación no garantiza por sí sola una salida 4:2:0 de 8 bits. La guía de encoding H.264 de FFmpeg advierte que, según la fuente, la salida puede usar un formato de píxel que QuickTime y la mayoría de los demás reproductores no pueden reproducir, y recomienda solicitar yuv420p explícitamente. En la nomenclatura de FFmpeg, yuv420p es 4:2:0 de 8 bits y yuv420p10le es su equivalente de 10 bits, por lo que debes comprobar el formato de píxel tanto de la fuente como de la salida. Un formato de píxel no describe la función de transferencia, y FFmpeg documenta el mapeo de tonos entre rangos dinámicos como un filtro independiente, tonemap, por lo que solicitar yuv420p no convierte una fuente PQ o HLG en SDR.
  4. Reducir material de mayor profundidad de bits a 8 bits puede introducir bandas en regiones casi uniformes, y el tramado no garantiza una solución. El filtro zscale de FFmpeg ofrece tramado ordenado, aleatorio y por difusión de errores, pero no aplica ninguno de forma predeterminada, y FFmpeg documenta su filtro de eliminación de bandas gradfun como exclusivo para la reproducción, porque la compresión con pérdida tiende a eliminar el tramado y hacer que las bandas reaparezcan.

Cuándo importa el video de 8 bits

Elige una salida de 8 bits para entregas de rango dinámico estándar que deban reproducirse en la mayor variedad de navegadores y reproductores, y solicita el formato de píxel explícitamente, porque de lo contrario un codificador puede conservar un formato de origen de mayor profundidad de bits o 4:2:2. La profundidad de bits no es el rango dinámico: una fuente de 10 bits no es necesariamente HDR, y reducir una fuente HDR a un formato de píxel de 8 bits no la convierte por sí solo en SDR. Prevé al menos 10 bits junto con una función de transferencia PQ o HLG para la entrega HDR, e inspecciona primero las regiones casi uniformes y los degradados suaves al comprobar si un video con encoding de 8 bits presenta bandas.

Cómo ayuda Transloadit con el video de 8 bits

El Robot /video/encode de Transloadit pasa las opciones de su parámetro ffmpeg a FFmpeg, y esas opciones tienen prioridad sobre el ajuste preestablecido elegido, por lo que una Assembly puede solicitar explícitamente una salida 4:2:0 de 8 bits, por ejemplo, con pix_fmt establecido en yuv420p, en lugar de depender de la fuente o del ajuste preestablecido.

Las tablas de ajustes preestablecidos indican el contenedor, los códecs, las tasas de bits y la resolución, pero no el formato de píxel, por lo que debes inspeccionar un archivo codificado para confirmar su profundidad de bits.

Explora las capacidades de video de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis