Un formato de codificación de vídeo [a] (o, a veces, formato de compresión de vídeo ) es un formato de representación de contenido de vídeo digital , como un archivo de datos o un flujo de bits . Normalmente, utiliza un algoritmo de compresión de vídeo estandarizado , que se basa más comúnmente en la codificación por transformada de coseno discreta (DCT) y la compensación de movimiento . Una implementación específica de software, firmware o hardware capaz de realizar la compresión o descompresión en un formato de codificación de vídeo específico se denomina códec de vídeo .
Algunos formatos de codificación de vídeo se documentan mediante un documento de especificación técnica detallado conocido como especificación de codificación de vídeo . Algunas de estas especificaciones son redactadas y aprobadas por organizaciones de normalización como estándares técnicos y, por lo tanto, se conocen como estándares de codificación de vídeo . Existen estándares de facto y estándares formales.
El contenido de vídeo codificado mediante un formato de codificación de vídeo en particular normalmente se incluye con una secuencia de audio (codificada mediante un formato de codificación de audio ) dentro de un formato contenedor multimedia como AVI , MP4 , FLV , RealMedia o Matroska . Como tal, el usuario normalmente no tiene un archivo H.264 , sino un archivo de vídeo , que es un contenedor MP4 de vídeo codificado en H.264, normalmente junto con audio codificado en AAC . Los formatos contenedores multimedia pueden contener uno de varios formatos de codificación de vídeo diferentes; por ejemplo, el formato contenedor MP4 puede contener formatos de codificación de vídeo como MPEG-2 Parte 2 o H.264. Otro ejemplo es la especificación inicial para el tipo de archivo WebM , que especifica el formato contenedor (Matroska), pero también exactamente qué formato de compresión de vídeo ( VP8 ) y audio ( Vorbis ) está dentro del contenedor Matroska, aunque Matroska es capaz de contener vídeo VP9 , y la compatibilidad con audio Opus se añadió más tarde a la especificación WebM .
Un formato es el plan de diseño para los datos producidos o consumidos por un códec .
Aunque los formatos de codificación de vídeo como H.264 a veces se denominan códecs , existe una clara diferencia conceptual entre una especificación y sus implementaciones. Los formatos de codificación de vídeo se describen en especificaciones, y el software, firmware o hardware para codificar/decodificar datos en un formato de codificación de vídeo determinado desde/hacia vídeo sin comprimir son implementaciones de esas especificaciones. Como analogía, el formato de codificación de vídeo H.264 (especificación) es al códec OpenH264 (implementación específica) lo que el lenguaje de programación C (especificación) es al compilador GCC (implementación específica). Tenga en cuenta que para cada especificación (por ejemplo, H.264 ), puede haber muchos códecs que implementen esa especificación (por ejemplo, x264 , OpenH264, productos e implementaciones H.264/MPEG-4 AVC ).
Esta distinción no se refleja de manera uniforme en la terminología de la literatura. La especificación H.264 denomina estándares de codificación de vídeo H.261 , H.262 , H.263 y H.264 y no contiene la palabra códec . [2] La Alliance for Open Media distingue claramente entre el formato de codificación de vídeo AV1 y el códec que lo acompaña y que están desarrollando, pero denomina al formato de codificación de vídeo en sí una especificación de códec de vídeo . [3] La especificación VP9 denomina al formato de codificación de vídeo VP9 en sí un códec . [4]
Como ejemplo de fusión, las páginas de Chromium [5] y Mozilla [6] que enumeran sus formatos de video compatibles llaman a los formatos de codificación de video, como los códecs H.264 . Como otro ejemplo, en el anuncio de Cisco de un códec de video gratuito, el comunicado de prensa se refiere al formato de codificación de video H.264 como códec ("elección de un códec de video común"), pero poco después llama códec a la implementación de Cisco de un codificador/descodificador H.264 ("códec H.264 de código abierto"). [7]
Un formato de codificación de vídeo no dicta todos los algoritmos utilizados por un códec que implementa el formato. Por ejemplo, una gran parte de cómo funciona normalmente la compresión de vídeo es mediante la búsqueda de similitudes entre fotogramas de vídeo (coincidencia de bloques) y luego lograr la compresión copiando subimágenes similares previamente codificadas (como macrobloques ) y añadiendo pequeñas diferencias cuando sea necesario. Encontrar combinaciones óptimas de dichos predictores y diferencias es un problema NP-hard , [8] lo que significa que es prácticamente imposible encontrar una solución óptima. Aunque el formato de codificación de vídeo debe soportar dicha compresión en todos los fotogramas en el formato de flujo de bits, al no exigir innecesariamente algoritmos específicos para encontrar dichas coincidencias de bloques y otros pasos de codificación, los códecs que implementan la especificación de codificación de vídeo tienen cierta libertad para optimizar e innovar en su elección de algoritmos. Por ejemplo, la sección 0.5 de la especificación H.264 dice que los algoritmos de codificación no son parte de la especificación. [2] La libre elección del algoritmo también permite diferentes compensaciones de complejidad espacio-temporal para el mismo formato de codificación de video, por lo que una transmisión en vivo puede usar un algoritmo rápido pero ineficiente en términos de espacio, y una codificación de DVD de una sola vez para una producción en masa posterior puede intercambiar un tiempo de codificación prolongado por una codificación eficiente en términos de espacio.
El concepto de compresión de vídeo analógico se remonta a 1929, cuando RD Kell en Gran Bretaña propuso el concepto de transmitir solo las partes de la escena que cambiaban de fotograma a fotograma. El concepto de compresión de vídeo digital se remonta a 1952, cuando los investigadores de Bell Labs BM Oliver y CW Harrison propusieron el uso de modulación diferencial de código de pulsos (DPCM) en la codificación de vídeo. En 1959, el concepto de compensación de movimiento entre fotogramas fue propuesto por los investigadores de NHK Y. Taki, M. Hatori y S. Tanaka, quienes propusieron la codificación de vídeo predictiva entre fotogramas en la dimensión temporal . [9] En 1967, los investigadores de la Universidad de Londres AH Robinson y C. Cherry propusieron la codificación de longitud de ejecución (RLE), un esquema de compresión sin pérdida , para reducir el ancho de banda de transmisión de señales de televisión analógica . [10]
Los primeros algoritmos de codificación de vídeo digital fueron para vídeo sin comprimir o utilizaban compresión sin pérdida , ambos métodos ineficientes y poco prácticos para la codificación de vídeo digital. [11] [12] El vídeo digital se introdujo en la década de 1970, [11] inicialmente utilizando modulación de código de pulso sin comprimir (PCM), que requería altas tasas de bits de alrededor de 45-200 Mbit/s para vídeo de definición estándar (SD), [11] [12] que era hasta 2.000 veces mayor que el ancho de banda de telecomunicaciones (hasta 100 kbit/s ) disponible hasta la década de 1990. [12] De manera similar, el vídeo de alta definición (HD) 1080p sin comprimir requiere tasas de bits superiores a 1 Gbit/s , significativamente mayor que el ancho de banda disponible en la década de 2000. [13]
La compresión de vídeo práctica surgió con el desarrollo de la codificación DCT compensada por movimiento (MC DCT), [12] [11] también llamada compensación de movimiento en bloque (BMC) [9] o compensación de movimiento DCT. Se trata de un algoritmo de codificación híbrido, [9] que combina dos técnicas de compresión de datos clave: la codificación de transformada de coseno discreta (DCT) [12] [11] en la dimensión espacial y la compensación de movimiento predictiva en la dimensión temporal . [9]
La codificación DCT es una técnica de codificación de transformación de compresión de bloques con pérdida que fue propuesta por primera vez por Nasir Ahmed , quien inicialmente la pensó para la compresión de imágenes , mientras trabajaba en la Universidad Estatal de Kansas en 1972. Luego, Ahmed la desarrolló en un algoritmo práctico de compresión de imágenes con T. Natarajan y KR Rao en la Universidad de Texas en 1973, y se publicó en 1974. [14] [15] [16]
El otro desarrollo clave fue la codificación híbrida con compensación de movimiento. [9] En 1974, Ali Habibi en la Universidad del Sur de California introdujo la codificación híbrida, [17] [18] [19] que combina la codificación predictiva con la codificación de transformación. [9] [20] Examinó varias técnicas de codificación de transformación, incluyendo la DCT, la transformada de Hadamard , la transformada de Fourier , la transformada inclinada y la transformada de Karhunen-Loeve . [17] Sin embargo, su algoritmo se limitó inicialmente a la codificación intra-cuadro en la dimensión espacial. En 1975, John A. Roese y Guner S. Robinson extendieron el algoritmo de codificación híbrida de Habibi a la dimensión temporal, utilizando la codificación de transformación en la dimensión espacial y la codificación predictiva en la dimensión temporal, desarrollando la codificación híbrida con compensación de movimiento entre cuadros . [9] [21] Para la codificación de la transformada espacial, experimentaron con diferentes transformadas, incluyendo la DCT y la transformada rápida de Fourier (FFT), desarrollando codificadores híbridos entre cuadros para ellas, y encontraron que la DCT es la más eficiente debido a su complejidad reducida, capaz de comprimir datos de imagen hasta 0,25 bits por píxel para una escena de videoteléfono con una calidad de imagen comparable a un codificador intra-cuadro típico que requiere 2 bits por píxel. [22] [21]
Wen-Hsiung Chen aplicó la DCT a la codificación de vídeo [23] , quien desarrolló un algoritmo DCT rápido con CH Smith y SC Fralick en 1977 [24] [25] y fundó Compression Labs para comercializar la tecnología DCT. [23] En 1979, Anil K. Jain y Jaswant R. Jain desarrollaron aún más la compresión de vídeo DCT con compensación de movimiento. [26] [9] Esto llevó a Chen a desarrollar un algoritmo práctico de compresión de vídeo, llamado DCT con compensación de movimiento o codificación de escena adaptativa, en 1981. [9] La DCT con compensación de movimiento se convirtió más tarde en la técnica de codificación estándar para la compresión de vídeo desde finales de los años 1980 en adelante. [11] [27]
El primer estándar de codificación de vídeo digital fue el H.120 , desarrollado por el CCITT (ahora ITU-T) en 1984. [28] El H.120 no se podía utilizar en la práctica, ya que su rendimiento era demasiado deficiente. [28] El H.120 utilizaba codificación DPCM con compensación de movimiento, [9] un algoritmo de compresión sin pérdidas que era ineficiente para la codificación de vídeo. [11] A finales de los años 1980, varias empresas comenzaron a experimentar con la codificación por transformada de coseno discreta (DCT), una forma de compresión mucho más eficiente para la codificación de vídeo. El CCITT recibió 14 propuestas de formatos de compresión de vídeo basados en DCT, en contraste con una única propuesta basada en la compresión por cuantificación vectorial (VQ). El estándar H.261 se desarrolló en base a la compresión DCT con compensación de movimiento. [11] [27] H.261 fue el primer estándar práctico de codificación de vídeo, [28] y utiliza patentes licenciadas por varias empresas, entre ellas Hitachi , PictureTel , NTT , BT y Toshiba , entre otras. [29] Desde H.261, la compresión DCT compensada por movimiento ha sido adoptada por todos los principales estándares de codificación de vídeo (incluidos los formatos H.26x y MPEG ) que le siguieron. [11] [27]
MPEG-1 , desarrollado por el Moving Picture Experts Group (MPEG), le siguió en 1991, y fue diseñado para comprimir vídeo de calidad VHS . [28] Fue sucedido en 1994 por MPEG-2 / H.262 , [28] que se desarrolló con patentes licenciadas de varias empresas, principalmente Sony , Thomson y Mitsubishi Electric . [30] MPEG-2 se convirtió en el formato de vídeo estándar para DVD y televisión digital SD . [28] Su algoritmo DCT con compensación de movimiento pudo lograr una relación de compresión de hasta 100:1, lo que permitió el desarrollo de tecnologías de medios digitales como el vídeo a la carta (VOD) [12] y la televisión de alta definición (HDTV). [31] En 1999, fue seguido por MPEG-4 / H.263 , que fue un gran avance para la tecnología de compresión de vídeo. [28] Utiliza patentes licenciadas de varias empresas, principalmente Mitsubishi, Hitachi y Panasonic . [32]
El formato de codificación de vídeo más utilizado a partir de 2019 [actualizar]es H.264/MPEG-4 AVC . [33] Fue desarrollado en 2003 y utiliza patentes licenciadas por varias organizaciones, principalmente Panasonic, Godo Kaisha IP Bridge y LG Electronics . [34] A diferencia del estándar DCT utilizado por sus predecesores, AVC utiliza el DCT entero . [23] [35] H.264 es uno de los estándares de codificación de vídeo para discos Blu-ray ; todos los reproductores de discos Blu-ray deben poder decodificar H.264. También es ampliamente utilizado por fuentes de Internet de transmisión, como videos de YouTube , Netflix , Vimeo y iTunes Store , software web como Adobe Flash Player y Microsoft Silverlight , y también varias transmisiones de HDTV por tierra ( estándares ATSC , ISDB-T , DVB-T o DVB-T2 ), cable ( DVB-C ) y satélite ( DVB-S2 ). [36]
Un problema principal para muchos formatos de codificación de vídeo han sido las patentes , lo que hace que su uso sea costoso o potencialmente arriesgado a una demanda de patentes debido a patentes submarinas . La motivación detrás de muchos formatos de codificación de vídeo diseñados recientemente, como Theora , VP8 y VP9, ha sido crear un estándar de codificación de vídeo ( libre ) cubierto solo por patentes libres de regalías. [37] El estado de la patente también ha sido un punto importante de discordia para la elección de qué formatos de vídeo admitirán los navegadores web principales dentro de la etiqueta de vídeo HTML .
El formato de codificación de vídeo de la generación actual es HEVC (H.265), introducido en 2013. AVC utiliza la DCT de enteros con tamaños de bloque de 4x4 y 8x8, y HEVC utiliza transformadas DCT y DST de enteros con tamaños de bloque variados entre 4x4 y 32x32. [38] HEVC está fuertemente patentado, principalmente por Samsung Electronics , GE , NTT y JVCKenwood . [39] Es desafiado por el formato AV1 , destinado a una licencia libre. A partir de 2019 [actualizar], AVC es, con mucho, el formato más utilizado para la grabación, compresión y distribución de contenido de vídeo, utilizado por el 91% de los desarrolladores de vídeo, seguido de HEVC, que es utilizado por el 43% de los desarrolladores. [33]
Los videos de consumo generalmente se comprimen utilizando códecs de video con pérdida , ya que esto da como resultado archivos significativamente más pequeños que la compresión sin pérdida . Algunos formatos de codificación de video diseñados explícitamente para compresión con pérdida o sin pérdida, y algunos formatos de codificación de video como Dirac y H.264 admiten ambos. [49]
Los formatos de vídeo sin comprimir , como Clean HDMI , son una forma de vídeo sin pérdida que se utiliza en algunas circunstancias, como cuando se envía vídeo a una pantalla a través de una conexión HDMI . Algunas cámaras de alta gama también pueden capturar vídeo directamente en este formato.
La compresión entre fotogramas complica la edición de una secuencia de vídeo codificada. [50] Una subclase de formatos de codificación de vídeo relativamente sencillos son los formatos de vídeo intrafotograma , como DV , en los que cada fotograma del flujo de vídeo se comprime de forma independiente sin hacer referencia a otros fotogramas del flujo, y no se intenta aprovechar las correlaciones entre imágenes sucesivas a lo largo del tiempo para lograr una mejor compresión. Un ejemplo es Motion JPEG , que es simplemente una secuencia de imágenes comprimidas individualmente en JPEG . Este enfoque es rápido y sencillo, a expensas de que el vídeo codificado sea mucho más grande que un formato de codificación de vídeo que admita la codificación entre fotogramas .
Debido a que la compresión entre cuadros copia datos de un cuadro a otro, si el cuadro original simplemente se corta (o se pierde en la transmisión), los cuadros siguientes no se pueden reconstruir correctamente. Hacer cortes en un video comprimido intracuadro durante la edición de video es casi tan fácil como editar un video sin comprimir: uno encuentra el comienzo y el final de cada cuadro, y simplemente copia bit a bit cada cuadro que uno quiere mantener, y descarta los cuadros que uno no quiere. Otra diferencia entre la compresión intracuadro y la compresión entre cuadros es que, con los sistemas intracuadro, cada cuadro usa una cantidad similar de datos. En la mayoría de los sistemas entre cuadros, a ciertos cuadros (como los cuadros I en MPEG-2 ) no se les permite copiar datos de otros cuadros, por lo que requieren muchos más datos que otros cuadros cercanos. [51]
Es posible crear un editor de vídeo basado en ordenador que detecte los problemas que se producen cuando se eliminan algunos fotogramas mientras que otros los necesitan. Esto ha permitido utilizar formatos más nuevos como HDV para la edición. Sin embargo, este proceso exige mucho más poder de procesamiento que la edición de vídeo comprimido intracuadro con la misma calidad de imagen. Pero esta compresión no es muy eficaz para utilizarla en cualquier formato de audio. [52]
Un formato de codificación de vídeo puede definir restricciones opcionales para el vídeo codificado, llamadas perfiles y niveles. Es posible tener un decodificador que sólo admita la decodificación de un subconjunto de perfiles y niveles de un formato de vídeo determinado, por ejemplo, para hacer que el programa/hardware del decodificador sea más pequeño, más simple o más rápido. [53]
Un perfil restringe las técnicas de codificación permitidas. Por ejemplo, el formato H.264 incluye los perfiles baseline , main y high (y otros). Mientras que los cortes P (que se pueden predecir en función de los cortes anteriores) se admiten en todos los perfiles, los cortes B (que se pueden predecir en función de los cortes anteriores y posteriores) se admiten en los perfiles main y high , pero no en baseline . [54]
Un nivel es una restricción sobre parámetros como la resolución máxima y las velocidades de datos. [54]
Un avance significativo en la metodología de codificación de imágenes se produjo con la introducción del concepto de codificación híbrida por transformada/DPCM (Habibi, 1974).
es similar al H.261, pero más complejo. Actualmente es el estándar de compresión de vídeo internacional más utilizado para telefonía por vídeo en líneas telefónicas ISDN (Red Digital de Servicios Integrados).