Comparativa de códecs de vídeo
Codecs > VideoLa compresión de video ha permitido acercar al público las ventajas del video digital.
Desde el mpeg1 usado en los Video-CDs hasta el DV de las videocámaras digitales, estos métodos de compresión hacen posible el almacenamiento de video en un espacio relativamente pequeño.
Introducción
Nos disponemos en este artículo a hacer una comparativa de algunos de los formatos de compresión de video más utilizados.
No pretendemos hacer una comparativa a bajo nivel sobre el funcionamiento interno de cada uno de ellos, si no un test a nivel de usuario, tiempos de compresión, calidad en la salida de video, ventajas e inconvenientes…
Existen multitud de codecs de video disponibles, a continuación listamos algunos de ellos con sus características:
Intel Indeo: audio no comprimido, permite bajo bitrate y baja resolución
Cinepak: audio no comprimido, mejor resolución de color que el Indeo, bajo framerate.
QuickTime: trae algunas mejoras sobre Indeo, necesita plataforma Apple para edicion.
Mpeg1:mayor resolución, audio con calidad CD, bajo bitrate, costoso de comprimir/descomprimir.
Mpeg2: alta resolución, mayor bitrate que Mpeg1.
Mpeg4: diseñado para bajos bitrates.
Con la difusión de material videográfico en formato DVD y transmisiones de video digital por satélite o cable y la popularidad de los nuevos formatos para videocámaras digitales DV, surge la necesidad de almacenar todo ese video en un espacio reducido.
Hemos seleccionado 3 variantes del codec Mpeg4 para hacer nuestras pruebas. Se trata de los codecs Divx3.11, Divx5.1 y XviD. Estos codecs se han vuelto enormemente populares, puesto que dan una buena calidad es un espacio muy reducido, así, tenemos que podemos almacenar varias horas de video en el espacio disponible en 1 CD-ROM.
Descripción de los codecs
Divx3.11: Se trata de un hack del codec MPEG-4 v3 de Microsoft. Inicialmente sólo podía ser usado con Windows Media Encoder para crear archivos .asf.
Fue el primero que permitió la compresión de varias horas de video con calidad aceptable en un CD-ROM.
El nombre de Divx3.11 está intimamente ligado a un software llamado Nandub. Se trata de un programa basado en el VirtualDub, dedicado a la compresión y creación de ficheros AVI.
Las opciones de que dispone 3.11 eran inicialmente dos modos de compresión, High Motion, adaptado a video con escenas rápidas y Low Motion para escenas lentas. El problema está en que a lo largo de la secuencia de video no se podía cambiar de modo y además sólo se podía comprimir en bitrate constante. Nandub permite al 3.11, cambiar de modo para cada uno de los frames, añade dos modos intermedios y permite bitrate variable en dos pasadas, lo que supuso una revolución en este mundillo.
Divx5.1: Divx se ha convertido en un estándar de compresión de video. En el último año ha salido al mercado reproductores de DVD que además permiten la reproducción de Divx5, aunque al tener un firmware actualizable sus capacidades pueden expandirse a otros formatos.
Incluso es muy usado en presentaciones multimedia o juegos; Warcraft3 de Blizzard usa Divx5 en todos sus videos.
La calidad de este codec esta avalada por DivxNetworks. Se actualiza con nuevas versiones frecuentemente, lo cual tiene pros y contras. La ventaja está en la constante búsqueda de mejora de la imagen y nuevas técnicas de compresión. Por contra, tenemos que hay que instalar nuevos codecs cada cierto tiempo, sencillo en el ordenador, pero más complicado en reproductores de sobremesa.
En cuanto al Divx5.1, se trata de una nueva versión que se distribuye en dos packs, la versión Divx5.1 y la Divx5.1 PRO.
La diferencia entre ambas está en la codificación del video, ya que Divx5.1 PRO usa algunas opciones mas avanzadas, la presencia de B-Frames o el cambio de bitrate en tiempo de codificación.
La decodificación es exactamente la misma en ambos.
Se ha mejorado el postprocesamiento de la imagen, se añade el Global Motion Compensation que mejora la distribución de bitrate entre los cuadros de imagen en situaciones críticas, tales como zooms agresivos o movimientos de cámara rápidos.
XviD: representa la alternativa Open-Source, un codec de libre distribución con el código fuente accesible.
Puedes descargarte las fuentes aquí: xvid.org.
Incluye numerosas opciones de compresión, y aplica las últimas técnicas para mejorar la calidad de video, B-Frames, 6 tipos de cuantización, doble pasada…
Al estar en constante desarrollo, nos vemos en la necesidad de descargar nuevos codecs cada poco tiempo, al igual que con Divx5.1.
Como se podrá ver a lo largo del artículo, Mpeg-1 no llega a la calidad que pueden ofrecer los codecs basados en Mpeg-4. Diseñado inicialmente para resoluciones medias y un bitrate mayor.
Aun así, es un codec que ofrece muchas otras ventajas. Utilizado desde hace más de diez años, su utilización en el formato VideoCD hace que prácticamente cualquier sistema tenga soporte para reproducirlo.
Funcionamiento
Cuando hablamos de compresión de video lo hacemos teniendo en cuenta que se trata de un tipo de compresión con pérdida de datos (una grabación de video sin compresión sería inviable debido al gran espacio en disco que ocuparía por minuto). Sin esta premisa sería imposible reducir la enorme cantidad de información que suponen las secuencias de video.
Las técnicas se basan en una serie de algoritmos que permiten reducir la cantidad de información sin que el resultado se vea afectado (o al menos es lo que intentan).
Primero se decodifica la imagen en sus componentes originales, RGB (Red, Green, Blue), YUV (Luminancia, Chroma) o cualquier método de almacenamiento de video digital. Tras esto se le aplican los algoritmos que permiten la compresión.
Algunas de estas técnicas son las siguientes:
Truncamiento: reducción del número de bits por cada componente, pixel, o resolución. Esta técnica es la más simple de todas, y su ventaja es que la complejidad de procesamiento es mínima.
CLUT: Colour Lookup Table, se trata de una tabla que almacena la información de color de los píxeles o regiones.
Run Length Coding: regiones que no cambian de una escena a otra, se almacenan y se les da un número, en la siguiente escena, si la región no cambia, se almacena el número de región y no sus píxeles constituyentes.
Interpolación de regiones: similar al anterior, pero permite que la región tenga cambios, así se almacena la región la primera vez, y mediante técnicas de interpolación, se reconstruye la siguiente con ciertos cambios que también se almacenan.
Predicción de valores: DPCM (Differential Pulse Code Modulation) y ADPCM (Adaptive DPCM) se usan para almacenar píxeles o regiones y reducir los posibles cambios que pueda haber a un rango menor.
Transformación de regiones: básicamente, se cambia la información de una región por otra que nos devuelva un resultado visual similar. Algunos de los algoritmos usados para esta transformación son el Discrete Cosine Transform (usado por ejemplo en imágenes JPG).
Motion Compensation: usa varias de las técnicas anteriores, decidiendo qué partes sufren cambios menores, divide la imagen en bloques y realiza cambios en los posibles valores obtenidos. Si los cambios entre regiones son mínimos, trata de no hacer cambio ninguno o predecir los valores.
Algunos de los problemas que ocasionan estas técnicas son la pérdida apreciable de información del color, contraste/brillo erróneo (overloading), degradación de la señal que se da por errores en los codecs teniendo como resultado cuadros corruptos.
Otro de los típicos problemas es el efecto Gibbs, sin duda el lector lo habrá visto en imágenes JPG y videos Mpeg. Se da en recuadros con alto contraste o cambio brusco de color o textura. Se da por el error relativo en la transformación trigonométrica de la información de color/luminancia.
Pero el fallo más característico y apreciable es el “Blockiness”, haciendo que los cuadros o regiones en que se ha dividido la imagen aparezcan perfectamente visibles debido a la gran diferencia de calidad con respecto a la imagen original. Se debe al bajo bitrate para esa secuencia.
El test
La comparación de los diferentes codecs de video no es una tarea fácil. Cada uno tiene unas características determinadas, dependiendo de la secuencia de video utilizada, pueden verse beneficiados unos codecs con respecto a otros.
Por ello hemos intentado buscar una secuencia de video neutra, con partes de grandes cambios en el video y otras con imágenes estáticas. El trailer de una película es ideal para ello, y aunque nos quedamos con ganas de usar un DVD al completo, los resultados con el trailer nos pueden dar una idea de las capacidades de cada uno de los formatos.
Hemos elegido el trailer que está disponible en el DVD de la película “Cadena Perpetua”, y alterna cambios de secuencia rápidos, zooms agresivos e imágenes estáticas.
Para la realización del test vamos a fijarnos en distintos aspectos. La calidad en situaciones determinadas para cada uno de los formatos, la velocidad de compresión, la sencillez/complejidad de su uso, la calidad aparente de ciertos frames (comparación directa de imágenes) y los niveles de cuantización.
Para ello hemos usado un ordenador modesto, un Athlon 1.1Ghz con 512Mb de RAM, aunque servirá para que el lector se haga una idea de cuán rápido es un codec con respecto a otro.
Origen de video: MPEG-2 / 704×576 (PAL) / 4:3
108.522 Kbytes
Duracion: 129 segundos.
Preprocesamiento: Smart Resize 1.1: 704×544 precise bilinear, corte de bordes y corrección de aspect ratio.
Destino:
Divx 3.11 sbc -> Nandub 1.0rc2 (build 1853)
Divx 5.1 PRO -> Virtual Dub 1.4.13
XviD core-0.9.2 sbc -> VirtualDub 1.4.13
Las resoluciones que hemos elegido son: 704×544, 640×480 y 480×360.
Para cada una de ellas hemos comprimido con 3 bitrate diferentes: 1200kbps, 900kbps y 700kbps.
Estos bitrates no son casuales, se corresponden con el bitrate necesario para comprimir 2 horas de DVD-Video en 2 CDs, 1,5 horas en 1CD y 2 horas en 1CD respectivamente.
Niveles de cuantización
La cuantización se define como la calidad relativa de un frame de video con respecto al cuadro original.
Durante la compresión, el codec dispone de un número de bits por cuadro disponibles para realizar la compresión, la calidad de salida de la imagen depende de las técnicas que use para la compresión y del bitrate máximo que pueda usar en ese momento.
De este modo, se divide la calidad de cada frame en niveles, se compara el bitrate disponible con el bitrate necesario con un nivel 1 de calidad, si no se dispone de suficiente bitrate, se incrementa el nivel (se decrementa la calidad y el bitrate necesario) y se vuelve a comparar.
Lamentablemente, el nivel de cuantización no es exactamente el mismo para cada codec, puesto que dependiendo de las técnicas de compresión, se establecen los “saltos” de calidad a un nivel o a otro. Sin embargo, y aunque no se puede hacer una comparación cara a cara, son bastante similares, y nos servirán para hacernos una idea de la calidad que está dando el codec.
Por poner un ejemplo, la cuantización de Divx3.11 a nivel 5, da menos calidad visual que la de Divx5.1 al mismo nivel. Asimismo no debemos confundir la calidad de un determinado nivel con la calidad general del codec, ya que esta depende además del porcentaje de frames con ese nivel, de la relación entre niveles y cambio de calidad en los saltos.
Al observar las gráficas obtenidas, hay que hacerlo teniendo en cuenta que la comparación entre codecs distintos debe verse con un error de +/- un nivel de diferencia.
A continuación mostramos varias gráficas que se corresponden con los niveles de cuantización que ha dado cada codec a varias resoluciones. A mayor resolución, la calidad de cada frame disminuye, mientras que a menor resolución se dispone de más bitrate.
Mostramos los niveles de 1 a 9, y el nivel 10 representa el nivel 10 y superiores. Cuanto menor sea el nivel mayor calidad de imagen se está representando.
Por tanto, los niveles de 1 a 4 representan un nivel de calidad visual bueno, entre 4 y 7 medio, y por último de 7 en adelante malo.
480×360:
![]() |
| DRF_Divx311_480×360 |
En Divx 3.11 vemos que a esta resolución el nivel óptimo se encuentra con un bitrate de 1200 kilobit por segundo, en este caso la mayor parte de los frames tienen un nivel de cuantización entre 1 y 4. En el caso de 900kbps y 700kbps, ambos dan una calidad similar, aunque como se puede observar, en 700Kbps tenemos un 15% y un 10% de frames con nivel 7 y 8 respectivamente.
![]() |
| DRF_XviD_480×360 |
Esta gráfica es muy similar a la del Divx 3.11. En Xvid observamos de nuevo que la mayoría de los frames se encuentran en niveles de entre 1 y 4. Quizás en esta ocasión se reparte más la parte 700kbps y 900kbps en niveles medios.
![]() |
| DRF_Divx51_480×360 |
En Divx 5.1 nos encontramos con una gráfica diferente, a 1200kbps vuelven a repartirse los frames entre los 4 primeros niveles, pero cuando rebajamos el bitrate, la gráfica se desplaza hacia niveles superiores. Especialmente observamos que a 700kbps tenemos un 25% de frames con un nivel 9.
640×480:
![]() |
| DRF_Divx311_640×480 |
Al Aumentar la resolución vemos que la cuantización de los frames se reparte a lo largo de la gráfica. Aunque a 1200kbps todavía conservamos unos niveles de calidad aceptables, a 700kbps y 900kbps observamos que cerca del 50% de los frames tienen una cuantización mayor a 5. Apreciamos la reducción de calidad sobre todo a 700kbps, donde el 24% de los frames superan el nivel 9.
![]() |
| DRF_XviD_640×480 |
Vemos de nuevo que el codec XviD da unos resultados bastante similares al Divx 3.11, a 1200Kbps da unos resultados bastante buenos, con la mayor parte de frames entre el nivel 3 y 7. Se desplaza bastante hacia niveles superiores a 900Kbps, pero es a 700kbps donde se aprecia la pérdida notable de calidad, con el 48% de frames con niveles superiores a 7.
![]() |
| DRF_Divx51_640×480 |
En Divx 5.1 observamos un desplazamiento general a la derecha, y es relevante que en 700kbps, el 52% de los frames tienen niveles superiores a 9.
704×544:
![]() |
| DRF_Divx311_704×544 |
Esta es la prueba más difícil, puesto que la resolución es casi la misma que el DVD original, pero con una corrección en el aspect ratio.
La calidad a 1200Kbps se ve bastante disminuida, aunque el 28% de los frames tienen nivel 5, el resto se reparten en niveles superiores.
A 900Kbps obtenemos una gráfica incluso más desplazada, y muy similar a la obtenida con 700Kbps. Para este último bitrate obtenemos la cifra del 40% de frames con nivel 10 y superiores.
![]() |
| DRF_XviD_704×544 |
Vemos que para XviD la calidad es casi la misma, quizás con un ligero desplazamiento a la derecha con respecto al Divx3.11, además observamos que más del 50% de frames tienen un nivel 10 o superiores.
![]() |
| DRF_Divx51_704×544 |
Los resultados obtenidos con Divx5.1 no son muy buenos en esta ocasión, con niveles muy desplazados a la derecha, se muestra peor calidad que XviD o Divx3.11, se observa que el 79% de frames tienen nivel 10 o superiores. Incluso a 1200Kbps, el 80% de los frames tienen nivel superior a 6.
Calidad de imagen
Obviamente, todas estas gráficas son solo orientativas, volvemos a resaltar que los niveles de cuantización no son los mismos para todos los codecs, y por tanto solo son válidos si se comparan con niveles dentro del mismo codec.
Hemos realizado las capturas de video en dos momentos significativos. La primera serie de capturas se han realizado en un keyframe, que aparece en un momento de cambios y continuos nuevos planos. Para observar el resultado, hemos usado todos los samples anteriores y todos los bitrates.
Hay que destacar que aunque para una imagen de menos resolución necesitemos menos bitrate, llega un momento en que los cuadros en que se dividen los frames se hacen más evidentes, sobre todo al maximizar la imagen.
![]() |
| comparativa resoluciones |
En ocasiones hay suficiente bitrate para darle a cada cuadro una calidad aceptable, y la matriz que se pretende mostrar es bastante fiel al original, pero si el bitrate es escaso, la matriz no es lo suficientemente fiel al original, de forma que el efecto blockiness se hace evidente.
Keyframe
El keyframe estudiado se trata de una imagen completa tras varias escenas rápidas, con esto pretendemos observar el comportamiento de los codecs al aparecer la nueva escena.
XviD :
![]() |
| xvid-multires-frame 517 key |
Observamos que cuanto menor es el bitrate, peor es la calidad de la imagen. Sin embargo en esta prueba XviD sale perdiendo con mucho, la cuantización que sufre la imagen es muy elevada en todos los casos y se pueden apreciar con claridad los cuadros que forman la imagen.
Divx311 :
![]() |
| divx311-multires-frame 517 key |
En el caso de Divx311, observamos que sale bien parado con respecto a XviD, en este keyframe, Divx311 disponía de suficiente bitrate para dar fidelidad a la imagen. Quizás en 480×360 y 1200 o 900 kbit, y 640×480 a 1200kbit es donde observamos una mayor calidad, aunque las imágenes son muy aceptables, incluso en el caso de bitrate crítico como es el caso de 704×544 a 700 kbit.
Divx51 :
![]() |
| divx51-multires-frame 517 key |
Divx51 nos muestra aquí la gran fidelidad que ofrece. En la mayoría de los casos se puede observar incluso el granulado original del DVD. Este hecho nos ha sorprendido, ya que la cuantización inicial del Divx51 era la mayor de los tres codecs, aquí se aprecia que la correspondencia entre niveles de Divx5.1 y los otros dos, es de 2 o quizás 3 puntos.
Intraframe:
El intraframe es una imagen incompleta que aparece por cambios sucesivos del keyframe. El la imagen estudiada, Morgan Freeman acaba de pasar el brazo por delante de la imagen, y cuando lo retira con un movimiento brusco, aparece la cara de Tim Robbins. Con esta prueba queremos observar la tasa de recuperación de imagen del codec en cambios bruscos.
XviD :
![]() |
| xvid-multires-frame 1594 intra |
Ahora estudiamos una situación diferente, la recuperación en este caso es aceptable, a pesar de ser una escena difícil se mantiene un buen nivel en casi todos los casos, destaca la buena calidad de las versiones 704×544 a 1200kbit y 480×360 a 1200kbit.
Divx311:
![]() |
| divx311-multires-frame 1594 intra |
Divx311 nos muestra una tasa de recuperación ligeramente inferior al XviD. La pixelación es algo mayor en todos los casos, aunque la imagen a 480×360 y 1200kbit es muy similar al observado en XviD.
Divx51:
![]() |
| divx51-multires-frame 1594 intra |
Divx51 nos sorprende gratamente en esta prueba. La calidad de la imagen es excelente en todos los casos, incluso podemos observar de nuevo cierto granulado del DVD original. Los algoritmos de detección de escena y cambio brusco de imagen han aprovechado de forma muy eficiente el bitrate.
Comparativa directa de imágenes
Elegimos ahora la resolución 704×544 para realizar una comparativa directa. En esta resolución hay una falta constante de bitrate en todos los casos, por lo que nos servirá para comparar en situaciones extremas.
![]() |
| comparativa directa key |
Para facilitar la visualización, con esta imagen se aprecian directamente el resultado de los codecs en el keyframe. Divx51 da una calidad excelente, seguido de Divx311 y muy por detrás XviD.
![]() |
| comparativa directa intra |
En el intraframe Divx51 muestra de nuevo la precisión de sus algoritmos, Divx311 está falto de bitrate en este caso, mientras que XviD mantiene el tipo y nos ofrece algunas resoluciones con una representación bastante fiel al original.
Conclusiones:
A lo largo de las pruebas hemos encontrado varios aspectos a destacar en cada uno de los codecs.
![]() |
| ejemplo nandub |
Divx311 es el más antiguo de los tres, y nos sorprende que de estos resultados, puede competir directamente con XviD y sus niveles de cuantización son muy similares, dando una calidad similar en la mayoría de las situaciones. Es rápido en la compresión, el tiempo para comprimir la escena a 704×544 fue de 12:36. Como punto negativo hay que decir que el software Nandub no ha sido mejorado desde hace tiempo y que la preparación de la compresión es algo tediosa para los neófitos, aunque rica en opciones.
![]() |
| ejemplo xvid |
XviD ha dado unos resultados muy similares al Divx311, quizás con una tasa de recuperación mas acertada. Destacamos su sencillez en la configuración, su rapidez es similar al Divx311. Al ser de libre distribución, es fácil encontrar codecs para reproductores de sobremesa, por lo que no tendrás ningún problema en las actualizaciones.
![]() |
| ejemplo divx51 virtual dub |
Divx51 se muestra como el más avanzado de los tres, los tiempos de codificación son ligeramente mayores que en XviD y Divx311, sin embargo se puede observar que no es tiempo desperdiciado, pues con la aplicación de sus algoritmos consigue una fidelidad sin igual en todas las situaciones, sorprendente en el caso de la tasa de recuperación.
Terminología
A continuación una breve explicación de algunos de los términos usados a lo largo del artículo.
Codec: conjunto de algoritmos necesarios para la codificación/decodificación de un archivo de
video/audio:
Frame: cada una de las imágenes que componen un video.
Bitrate: cantidad de información usada en una determinada unidad de tiempo, normalmente se expresa en kilobit por segundo (1024bits/seg).
MPEG: Moving Pictures Experts Group, estándar en compresión de audio/video.
Aspect Ratio: relacioón de aspecto, se trata de una medida que representa la relación entre la resolución horizontal y vertical.
Resolución del color: La información acerca del color de cada pixel puede representarse de múltiples formas, RGB24 o YUV que reparten la información en bloques de ‘n’ bits o separan luminancia y crominancia.
Bloque: cuadro de NxN bits en que se parte la imagen.
I-Frame: también llamado I-Picture o keyframe. Es un frame de los muchos que componen el video, con la particularidad que está completo y no depende de los anteriores ni de los posteriores.
P-Frame: No contienen la información completa de la imagen, ya que la recogen de la información de keyframes anteriores o de otros P-Frames. También llamado delta frame o intraframe.
B-Frame: la imagen que contiene, se reconstruye mediante información de frames anteriores y/o posteriores. Se usan en predicción de imágenes bidireccional.
D-Frame: usado para realizar búsquedas en determinadas situaciones.
Aliasing: se produce al convertir altas frecuencias de la imagen en frecuencias más bajas.
Ruido de cuantización: la imagen original debe convertirse en digital asignando cierta información acerca del color. Al representar con pocos bits esta información se producen errores en el color y pérdida de calidad.
Errores de bloque: aparecen por errores en la codificación, bloques enteros aparecen corruptos con colores fuera de escena.
Efecto Gibbs: inherente a la compresión del tipo jpeg y mpeg. Aparece sobre todo en imágenes artificiales de alto contraste, como texto o bordes o figuras geométricas. Es debido a la transformación trigonométrica de la información de luminancia y crominancia al digitalizar.
Blockiness: en ocasiones los bloques en que se descompone la imagen se hacen demasiado evidentes debido al bajo bitrate.
Links relacionados
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/sab/report.html
http://www.ipv.com
http://www.divx.com
http://www.xvid.org
http://www.doom9.org
http://www.geocities.com/analyzerDRF/#DRFValues
http://www.dvdrhelp.com/forum/archive/t161628.html
http://www.tecoltd.com/bitratev.htm



(Sin votos)





























