jueves, 6 de enero de 2011

Diferencia entre formatos contenedores y codecs


Un vídeo es una secuencia de fotogramas (imágenes o frames) que al ser mostradas de manera consecutiva y a la frecuencia (imágenes por segundo) adecuada dan lugar a lo que comúnmente se denomina “película”. Para que una película sea fluida, es decir, que al visionarla no de la sensación de estar viendo una secuencia de imágenes, la frecuencia de los fotogramas mostrados por segundo debe ser mayor de 15 Hz (1/s = 1Hz). Por su puesto, un vídeo suele venir acompañado de otros elementos opcionales, destacando principalmente el audio.

Normalmente el vídeo suele venir acompañado, además del audio, de otros elementos opcionales, como los subtítulos, los metadatos y los menús. Entonces, ¿cómo está estructurada toda esta información?
  • El vídeo es un conjunto de datos codificado mediante un algoritmo denominado codec de vídeo.
    Un codec permite tanto codificar como decodificar la información. Por tanto, si la información es codificada por un codec concreto, para poder reproducirla es necesario tener ese mismo codec en el reproductor.
    El vídeo en sí puede estar formado por varias pistas (archivos) de vídeo, normalmente codificadas por el mismo codec.
  • El audio es otro conjunto de datos codificado mediante otro algoritmo llamado codec de audio. El audio puede estar formado por varias pistas (archivos) de audio. Al igual que ocurre con el vídeo, la codificación empleada suele ser la misma en todas las pistas de audio.
  • Los subtítulos pueden venir en archivos independientes o estar incrustados directamente.
  • Los metadatos son datos que describen otros datos (duración, anchura, altura, etc.).
  • Los menús.
Todos estos elementos se encuentran dentro de un contenedor. Una analogía que ilustra esta idea es una caja de herramientas.
  • La caja de herramientas es el contenedor. Existen distintos tipos de contenedores.
  • Las herramientas son el resto de elementos. No todas las herramientas pueden estar dentro de todas las cajas de herramientas. Esto significa que no todos los contenedores admiten los mismos codecs de audio o de video, así como subtítulos, metadatos o menús.

El formato contenedor es el tipo de archivo que identifica al contenedor. Un ejemplo de contenedor flv sería el vídeo casero “micumpleaños.flv”.

Algunos contenedores y codecs más empleados son:
  • Contenedores: avi, mp4, mkv, mov, flv, rmvb, ogg, webm.
  • Codecs de vídeo: DivX, H264, Xvid, VP8, Theora,.
  • Codecs de audio: AAC, MP3, WMA, FLAC, ogg.



Próximamente publicaré en el blog una entrada explicando cómo trabajar con codecs y contenedores mediante el “comando” ffmpeg.