Instalación y configuración de Computadores y Periféricos
Escuela Técnica de Ingeniería Informática de Gijón
3º Ingeniería Técnica en Informática de Sistemas

Análisis de códecs de audio y vídeo en Windows XP

Autores: Alejandro Martínez Naredo, Pablo Martínez Naredo, Carlos Mencía Cascallana

Fecha: 20 de Mayo de 2005

Objetivos

El objetivo de este documento es estudiar la codificación y decodificación de audio y vídeo desde dos perspectivas diferentes: una teórica y otra práctica.

Debido a los conflictos legales que rodean a la protección de copia de CDs y DVDs, este trabajo está planteado desde un enfoque más bien teórico que práctico.

En la parte teórica presentaremos los fundamentos básicos de los códecs, así como las técnicas más habituales que siguen estos, aunque debido a su complejidad no podremos ser especialmente exhaustivos.

En cuanto a la parte práctica nos limitaremos a codificar un vídeo con sonido, con alguno de los métodos que se explicarán más adelante.

Teoría

Conceptos generales

A continuación se describen los conceptos fundamentales para entender qué es y para qué sirve un códec.

Compresión de la información:

Comprimir significa reducir la cantidad de datos necesarios para representar y almacenar la información. Para ello existen algoritmos que se clasifican en dos ramas según su funcionamiento:

Algoritmos de compresión con pérdida de información, en los que se reduce considerablemente el tamaño de los archivos, pero se pierde calidad. Un ejemplo es el códec de sonido MP3.

Algoritmos de compresión sin pérdida de información, que son menos efectivos en cuanto a la compresión, pero no prescinden de información. Un ejemplo es el códec de sonido WAV.

Códec:

El término códec procede de las palabras CODificador/DECodificador. Cada códec está constituido por un conjunto de librerías que implementan diferentes algoritmos. El objetivo fundamental de estos algoritmos es la compresión y decompresión de audio y vídeo digital (de hecho se acepta el término códec como COmpresor/DECompresor de datos). Aunque existen códecs sin pérdida de información, generalmente los algoritmos que se utilizan para esta tarea son algoritmos con pérdida. Por ello en este tema es habitual el compromiso entre la calidad del archivo comprimido y el nivel de compresión, es decir, cuanto más compresión menor calidad. Un ejemplo de códec de audio es MP3 y de códec de vídeo es Xvid.

Contenedor:

Un contenedor es un tipo de archivo cuyo cometido es almacenar información. Por ejemplo: el formato contenedor AVI puede contener datos de audio en MP3 y de vídeo en DivX, lo que hace posible almacenar un vídeo en el que la imagen y el sonido estén sincronizados. Es importante no confundir este concepto con el de códec; un contenedor sólo almacena la información y un códec es un elemento software que la transforma, no almacena nada.

Códecs de audio.

Las técnicas de compresión de audio aprovechan las limitaciones de las personas en su percepción de las ondas sonoras. Por esto es fundamental el estudio del oído como base para desarrollar algoritmos de compresión eficaces.

El ser humano percibe los sonidos en base a dos parámetros de las ondas sonoras: la potencia (dB) y la frecuencia (Hz).

Dada una frecuencia, se conoce como umbral de audición a la potencia mínima que puede tener la onda para que la percibamos, lo que da la primera idea para comprimir este tipo de información: se elimina todo aquello que no podamos oír.

En cuanto a la frecuencia, el ser humano sólo es capaz de percibir ondas comprendidas en el rango 20Hz - 20KHz, por lo que también se pueden eliminar todos los elementos del sonido que no estén en dicho rango.

Es también importante el fenómeno de enmascaramiento sonoro, que es el proceso por el cual el umbral de audibilidad correspondiente a un sonido se eleva debido a la presencia de otro sonido. Es decir, si se estamos escuchando un determinado sonido, y aparece otro con una frecuencia similar, pero con más potencia, dejaremos de percibir el primero. Se dice entonces que la segunda onda sonora enmascara a la primera. De cara a la compresión de audio se puede aprovechar este fenómeno y eliminar las componentes de ondas sonoras que estén enmascaradas por otras.

Cuanto más alto sea el nivel de compresión, más elementos "no perceptibles" eliminará, empezando por los que más lejos están de lo audible por el oído y acercándose a los elementos que están cerca de los límites de audición. Esto significa que un nivel muy alto de compresión descartará elementos sonoros que sí pueden ser oídos en determinadas circunstancias, lo que baja sustancialmente la calidad.

Códecs de vídeo.

Al igual que los códecs de audio, los de vídeo basan su funcionamiento en la eliminación de elementos de la información que no son perceptibles, o que pasan inadvertidos a los ojos del ser humano.

La información se codifica en forma de flujos de bits.

En este caso, la mayor parte de la compresión se consigue mediante dos técnicas. La primera consiste en poner cada cierto número de imágenes (frames) un fotograma completo, y en puestos intermedios, ir eliminando distintas partes en las que no haya movimiento, como por ejemplo los fondos. Así, al hacerse pasar los distintos frames muy rápido, el espectador no notará que las imágenes no están completas una a una. La segunda técnica explota una propiedad del ojo humano; éste es más sensible a cambios rápidos de brillo que de color, por lo que se pueden eliminar componentes de color sin perder en calidad en la percepción.

Además de las técnicas mencionadas existen otras no poco importantes. Algunas son secillas e ineficientes como por ejemplo representar las componentes de color con menos bits, con lo que se pierde resolución. Otras son más complejas en su implementación y de mucho coste computacional, como los llamados algoritmos predictivos, que tratan de predecir el total a partir de un subconjunto de la imagen. Es interesante mencionar la técnica de codificación estadística, donde se estudia si los valores de los píxeles siguen una determinada distribución estadística, lo que permite construir algoritmos basados en códigos de Huffman, en los que los valores con más probabilidad de 'ocurrir' se representan con menos bits que los que apenas se dan.

Un aspecto negativo relativo a la codificación y decodificación de vídeo es la necesidad de gran cantidad de recursos del computador durante el proceso, tanto en CPU como en memoria.

Configuración de partida

Antes de reproducir o codificar un archivo de audio o de vídeo es conveniente conocer qué códecs tenemos instalados en nuestro sistema, así como obtener información sobre los códecs con los que haya sido codificado el archivo.

¿Cómo averiguar qué códecs están instalados en el sistema?

En Windows XP, para consultar los códecs instalados: Inicio -> Configuración -> Panel de Control -> Dispositivos de sonido y audio -> Hardware -> Códecs de audio / vídeo -> Propiedades.

Las siguientes pantallas ilustran el modo en que viene dada la información que buscamos.

Pantalla general.

Pantalla de códecs de vídeo.

Pantalla de códecs de audio.

¿Cómo averiguar con qué códec está codificado un archivo?

En el caso de que el archivo sea un contenedor AVI, basta con pulsar sobre él con el botón derecho del ratón -> Propiedades -> Resumen

Si se tiene instalado el códec correspondiente aparecerá el nombre y sus parámetros; en caso contrario, se muestra un código de cuatro caracteres que lo identifica. Este código se conoce como FOURCC y se puede consultar en numerosos sitios de Internet su significado y el códec al cual corresponde.

Por ejemplo, veámos con qué códecs se comprimió este concierto del gran bluesman Stevie Ray Vaughan. El archivo es un .avi

En este caso los códecs utilizados fueron MP3 para el audio, y DivX para el vídeo; se puede observar también los parámetros básicos en cada uno.

Aunque no entra dentro de los objetivos del curso, creemos que explicar una manera sencilla de cómo codificar un vídeo lo completa. Para codificarlo se utilizará un pack de programas, que serán ejecutados en orden mediante un programa 'automatizador', con lo que será suficiente con configurarlo al principio. El programa se llama 'Auto Gordian Knot'. Antes de iniciar el proceso de compresión es necesario desencriptar los archivos de un DVD y almacenarlos en el disco duro. El proceso es sencillo pero como dudamos de la legalidad de esta acción, no explicaremos en este documento cómo se realiza. Hay mucha información sobre esto en Internet.

Como punto de partida se tendrá instalado el Auto Gordian Knot, los códecs de XviD y MP3 y los archivos que queremos codificar en el disco duro.

Desarrollo

La conversión de un archivo de DVD (ya en disco) en un AVI con el programa Auto Gordian Knot se hace en cinco pasos.

Comprimiremos un vídeo cuya duración es de aproximadamente 23 minutos para no alargar excesivamente el proceso.

Primer paso

En primer lugar tenemos que indicar la ruta de los archivos del DVD en el disco duro y el directorio en que queremos crear el nuevo archivo codificado. Tras seleccionar la ruta de los archivos se mostrará información sobre estos, como el formato (PAL, en nuestro caso), la resolución lo el framerate.

La imagen siguiente muestra la pantalla donde configuramos los parámetros.

Nótese que los archivos del DVD los tenemos en "C:\Archivos" y el vídeo que vamos a crear será "C:\Archivos Comprimidos\video.avi".

Segundo paso

En esta parte elegimos las pistas de sonido y de subtítulos si las hubiera. Deberíamos haber tomado nota sobre los archivos en el momento de pasarlos del DVD al disco duro. También se puede averiguar fijándose la descripción. En nuestro caso sólo hay una pista de sonido y no hay subtítulos.

La siguiente imagen muestra la pantalla después de realizar el segundo paso.

Tercer paso

Llegados a este punto hay que determinar el tamaño que ocupará el archivo. Se puede hacer de tres maneras: escogiendo entre una lista de tamaños predefinidos, por ejemplo: 1 CD = 700 Mb, eligiendo directamente el peso del archivo o escogerlo en función de la calidad.

En este caso, teniendo en cuenta que los archivos del DVD pesan aproximadamente 1 GB, se escoge la segunda opción y 500 MB, con lo que el índice de compresión es bajo, y el vídeo será de mucha calidad, aparte de tardar poco en construirse.

La siguiente imagen muestra la elección:

Cuarto paso

En el cuarto paso escogeremos los códecs con los que queremos codificar el vídeo. Para ello hay que pulsar en el botón 'Advanced Settings' y escoger el códec de audio: XviD o DivX; y el de audio: AC3/DTR, VBR MP3 (bitrate variable) o CBR MP3 (bitrate constante). Para este caso se escoge VBR MP3 y 128 kbps de bitrate medio. También se puede configurar la resolución que en este caso la dejamos automática ('Auto width').

La siguiente imagen muestra la elección:

Paso 4

Mediante el botón 'Preview' se puede ver una muestra del vídeo comprimido.

Quinto paso

Por último se añade el trabajo a la cola de trabajos ('Job Queue') y cuando se quiera comenzar el proceso de codificación se pulsa 'Start'. A través de la ventana de logs se puede realizar un seguimiento de cómo se realiza la tarea

La siguiente imagen muestra la situación

Aunque el vídeo no tiene excesiva duración y el índice de compresión es bajo, la codificación ha durado 1:40 horas. Esto pone de manifiesto la sobrecarga que supone esta tarea.

Resultados obtenidos

El archivo 'video.avi' de 500 Mb, tiene las siguientes características:

La calidad es muy buena, aunque el tamaño de archivo resulta demasiado grande.

Enlaces

Los sitios web incluidos en los siguientes enlaces ofrecen información complementaria que puede resultar de utilidad a la hora de profundizar en el conocimiento y desarrollo de códecs:

http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/sab/report.html - Información detallada de conceptos técnicos en la codificación de vídeo digital. En inglés.

http://www.mundodivx.com - Contiene abundante información sobre los códecs, así como manuales y referencias de los programas más utilizados para codificar.

http://graphics.tomshardware.com/video/19990924/index.html - Artículo de Tom's Harware sobre técnicas de compresión de vídeo digital. En inglés.

http://www.fourcc.org - Contiene referencias sobre muchos códecs de vídeo, con su código FourCC correspondiente. En inglés.

http://www.mp3-converter.com/mp3codec/mp3_anatomy.htm - Estudio detallado sobre el funcionamiento del códec de audio MP3. En inglés.

http://www.xvid.org - Sitio oficial del códec de vídeo de libre distribución XviD. Incluye descargas de códigos fuente del códec. En inglés.

http://www.cs.sfu.ca/CourseCentral/365/li/squeeze/index.html - Contiene información acerca de distintos métodos de compresión. En inglés.

http://ict.udlap.mx/people/raulms/avances/ - Información general (en español) sobre los distintos métodos y estándares en el formato de audio y vídeo digital.

Conclusiones

Como pudimos comprobar tras la realización de este trabajo, la información relativa a la teoría de códecs es más bien escasa en la Red, e incluso presenta incoherencias entre sitios diferentes.

Lo que sí está claro es la gran importancia que han adquiriendo en los últimos años el formato contenedor de vídeo AVI, y especialmente el códec de audio MP3. Es por esto por lo que han servido como ejemplos típicos en el documento. Cabe destacar además el auge del códec de vídeo XviD, que está sustituyendo al conocido DivX, por dos razones fundamentales: mejor calidad de compresión, y mayores posibilidades de utilización por ser de libre distribución.

Otro de los aspectos observados se refieren a las normativas y leyes a la hora de extraer en nuestro ordenador el contenido de un DVD o un CD de nuestra propiedad para copiarlo. ¿Es esto legal? Quién sabe... En todo caso, existen numerosos sitios en Internet donde encontrar software y tutoriales para conseguir esto. Nosotros hemos preferido no entrar en detalles para evitar conflictos.

Licencia

Creative Commons License
Este trabajo utiliza una Licencia Creative Commons.