2. Versiones "stand alone" Vs "plug-in"
3.1 La
secuencia
GOP: I-frames, P-frames y B-frames
3.2 Control de búfer
3.3
Perfiles
y niveles (Profiles&Levels)
3.4
Diferencias entre
MPEG1 y MPEG2
3.4.1 MPEG-1
3.4.2 MPEG-2
4. Compresores más
utilizados
4.1 TMPGEnc
4.2
Cinema
Craft Encoder
4.3 DivX
4.3.1
DivX
Codec
4.4 LSX-MPEG
4.5 Panasonic
MPEG-1
1. ¿Qué son los compresores en tiempo no-real?
Desde hace ya mucho tiempo existen compresores de vídeo MPEG (encoders) que transforman archivos AVI en MPEG siguiendo los parámetros de configuración que deseemos. A diferencia de los compresores "en tiempo real" que comprimen el vídeo conforme les llega (en el caso de la captura de vídeo), éstos códecs no comprimen a la misma velocidad que les llega el video sino que procesan el vídeo a la velocidad a la que la CPU permita. Dependiendo de la potencia del equipo, tamaño de pantalla, profundidad de color, tipo de compresión, filtros o efectos especiales aplicados, etc se prodrá procesar el vídeo en tiempo real. Con equipos a partir de 1 Ghz (para tamaños VCD/SVCD) es posible comprimir incluso más rápido que a tiempo real. Ésto es, que si le entregamos a uno de éstos compresores un vídeo de 10 minutos, dependiendo de la configuración elegida, y por supuesto de la velocidad del procesador, puede necesitar 20, 40, 60 o 5 minutos en obtener el resultado final.
Con los programas de compresión en tiempo no-real podremos, o bien reducir el tamaño de una captura preservando el máximo de calidad posible, o bien producir un "render" o versión final de una edición.
Con la llegada de los formatos VCD, pero
sobretodo
con el DVD, ha habido una mayor proliferación de éstos
compresores
y actualmente la oferta es ámplia y variada, por lo que se hace
bastante
difícil decidir cuál es el mejor. Se suele estar bastante
de
acuerdo que los compresores TMPGEnc,
Canopus Pro Coder y Panasonic MPEG1
son los que ofrecen una mayor calidad en MPEG-1, aunque TMPGEnc y
Canopus
Pro Coder también puede comprimir a MPEG-2 con los mismos
niveles
satisfactorios de calidad. Por otro lado tenemos XingMPEG que es
rapidísimo
en MPEG-1, aunque la calidad deja algo que desear. Por último Cinema Craft Encoder y LSX-MPEG
ofrecen
una velocidad excelente, muy buen resultado cuando se trabaja con
originales
de buena calidad, posibilidad de exportar a MPEG-1 o MPEG-2, con una
versión
un plug-in para Premiere que también se puede usar directamente
en
Xmpeg o FlaskMPEG y, en el caso de LSX-MPEG, también
instala
un filtro Direct Show en el sistema para poder ver vídeo MPEG-2
desde
cualquier aplicación. Pero hay otros códecs como bbMPEG
que también ofrecen unas posibilidades EXCELENTES. Como no se
pueden
usar todos a la vez, lo mejor es adaptarse a uno, el que más nos
guste
cuando lo probemos, el que sea más fácil de conseguir...
puesto
que, aunque las hay, las diferencias no suelen ser abismales (al menos
con
flujos de datos superiores a 2.000 Kbit/s) Hay un hilo en el foro muy
interesante
al respecto de los compresores y sus calidades, aunque me consejo es,
sin duda, que experimentes tú mismo para ver POR TUS OJOS
qué compresor
te da mejores resultados:
http://www.videoedicion.org//index.php?board=18;action=display;threadid=1104
2. Versiones
"stand
alone" Vs "plug-in"
Cuando trabajar con video en un ordenador personal pasó a ser algo al alcance de la mano de cualquiera se desarrollaron diversas aplicaciones para trabajar con él. Todas esas aplicaciones usaban los códecs VFW (Video For Windows - Video para Windows) para exportar el resultado, pero ¿y si queríamos el vídeo final en formato MPEG? Había que exportar el vídeo en formato AVI y, posteriormente, recomprimirlo a MPEG. Esto era doblemente molesto, no sólo por el tiempo perdido, sino también por la ingente cantidad de espacio necesario, y más hace no tantos años cuando cada MB de disco duro era un pequeño tesoro. Rápidamente surgieron "añadidos" o "plug-ins" para los programas más utilizamos para trabajar con vídeo digital que facilitaban la exportación directa a MPEG sin necesidad de pasar por un AVI intermedio. De entre todos los programas que trabajan vídeo en el ordenador "Adobe Premiere" ha sido el que más atención ha recibido por parte de las compañías de software que casi siempre han dispuesto una versión de sus compresores en formato "Plug-in" para Premiere. Tanto se han extendido éstos códecs que, hoy día, los plug-in's de Premiere se utilizan en otras aplicaciones totalmente independientes de él. Tal es el caso de de Xmpeg o Flask o incluso otros programas de postproducción como Discreet Combustion.
Desde que el uso de Plug-ins se convirtió en algo habitual, se comenzó a usar la doble terminología de "stand alone" para la versión independiente que no necesita de ningún otro programa, y "Plug-in" para aquellos compresores que necesitan integrarse en una aplicación para poder recibir el vídeo que van a comprimir.
Como ahora mismo tienes la cabeza embotada con tantas conceptos nuevos, programas y palabras raras no habrás caído en un "pequeño" detalle. Los compresores llamados "Stand Alone", es decir, independientes, reciben ese nombre por un motivo muy concreto, y es que trabajan de forma independiente y se "alimentan" de ficheros AVI ya producidos. Si estamos extrayendo vídeo y/o audio de un fichero .VOB procedende de un DVD, o si queremos usar uno de éstos compresores "stand alone" o independientes para comprimir el proyecto que acabamos de crear en Adobe Premiere se nos presentan un problema doble: éstos compresores, ni admiten el vídeo en formato MPEG-2, el usado en las pistas de vídeo de los DVD's, ni admiten audio en formato .AC3, el utilizado en la INMENSA mayoría de los DVD's.
Para solucionar éste problema surgieron
hace
ya tiempo unos "servidores de vídeo" como AviSinth o Video Server Package
cuya función es crear un archivo AVI "falso" que funcionan como
puente
de enlace entre el programa que "sirve" el vídeo (Adobe
Premiere,
DVD-x, Flask, Xmpeg y MPEG Mediator) y el compresor independiente que
lo
recibe y comprime (TMPGEnc, Cinema Craft Encoder, Panasonic MPEG-1,
LSX-MPEG,
bbMPEG, etc)
NOTA 1: Aunque en principio parece más lógico hablar del MPEG justo después de haberlo hecho de los formatos RGB y YUV (Ver 1.1 RGB y 1.2 YUV) he prefido dejarlo para este momento porque normalemte sólo se trabaja con MPEG una vez que tenemos el archivo de vídeo capturado en nuestro disco duro. Por eso he preferido tratar primero de los formatos y códecs usados durante la compresión en tiempo real y es ahora cuando comento este formato de compresión en tiempo no-real. Es cierto que hay capturadoras que realizan este proceso por hardware durante la captura, pero si no tenemos una de esas "maravillas", la compresión MPEG en tiempo real por sofware no es muy recomendable. He probado a capturar directamente en MPEG con Power VCR II v.3.0 Pro (http://www.gocyberlink.com/english/products/powervcr2/powervcr2.asp) y con WinVCR 2.5 Plus (http://www.cinax.com/Products/winvcr.html) Los resultados no fueron satisfactorios en un Duron 700, no así en mi actual XP 1700, dónde la calidad obtenida es aceptable si la fuente original era de buena calidad. No obstante la calidad sigue siendo inferior a comprimir en tiempo no-real.
NOTA 2: La información que aquí presento es para "andar por casa" Si te interesa conocer hasta el más mínimo detalle de la compresión MPEG te recomiendo que visites http://www.fuac.edu.co/autonoma/pregrado/ingenieria/ingelec/proyectosgrado/compresvideo/
Seguro que has oído hablar del formato de imagenes BMP (bitmap o mapa de bits). Es el formato gráfico estándar por antonomasia que define qué color tiene cada píxel de una imágen determinada. Es un formato estándar, pero las imágenes BMP ocupan un gran tamaño por pequeñas que sean, por eso, salvo a nivel profesional, no es frecuente trabajar en BMP y se recurre a otros formatos con compresión. Seguro que también has oído hablar del formato JPEG (Joint Photographic Experts Group o Grupo de Expertos Fotográficos Unidos, también conocido como JPG) usado para la compresión de imágenes (muy común desde la llegada de internet) Usando el algoritmo de compresión JPEG no se puede recuperar una imágen con la misma calidad que antes de comprimirla. Es un formato con pérdida, pero usando valores de compresión ligeros o moderados es difícil o imposible apreciar a simple vista la pérdida y a cambio, se obtienen una reducción en el tamaño de la imágen que suele compensar la pérdida en la mayoría de los casos.
Un vídeo no es más que una sucesión de imágenes en movimiento Si comprimimos todas esas imágenes (las de un vídeo) en formato JPEG obtendríamos el formato MJPEG, o Motion JPG. Con este formato ya se logra una buena compresión con respecto al original. Partiendo del MJPEG se llegó al formato MPEG (Moving Picture Experts Group o Grupo de Expertos de Imágenes en Movimiento) La compresión MPEG supone un avance importante con respecto la compresión MJPEG al incluir un análisis de cambios entre una imágen clave, o cuadro clave, y un número determinado (suele ser 14) de imágenes posteriores. De ese modo, se comprime la imágen clave en formato JPEG y los 14 cuadros o imágenes siguientes NO SE COMPRIMEN ENTEROS, tan sólo se almacenan los cambios con respecto al primer cuadro clave tomado como referencia.
Actualmente se usan 3 formatos de compresión MPEG:
El MPEG-1 es el usado en el VCD y CVCD
El MPEG-2 es el usado en los DVD's, SVCD's, CVD's y
en
las televisones digitales
El MPEG-4 es el usado en los vídeos DivX
Si todavía no conoces estos formatos,
léete
YA el manual de primeros
auxilios.
El documento que indico a continuación trata el MPEG2 y, aunque está en inglés, realmente MERECE LA PENA LEERLO.
http://www.bbc.co.uk/rd/pubs/papers/paper_14/paper_14.html
3.1 La secuencia GOP: I-frames, P-frames y B-frames
Un archivo MPEG está compuesto de unas secuencias cíclicas llamadas GOP (Group Of Pictures - grupo de imágenes) que, como su nombre indican, engloban cierto número de fotogramas, normalmente 15. Aunque no es necesario que estos grupos estén formados siempre por el mismo número de fotogramas, se suele asignar el mismo patrón GOP en todo el archivo MPEG. En los casos en que la secuencia GOP no varía en todo el archivo es frecuente indicarla tan sólo una vez al principio pero ¡¡¡ OJO !!!Para que un archivo de vídeo MPEG-2, el formato usado para DVD, sea 100% compatible con DVD deberemos seleccionar en el programa correspondiente la opción de "incluir encabezado GOP antes de cada secuencia" para que se incluya un encabezado de secuencia antes de cada GOP
Muchos reproductores no tendrán problema para reproducir un vídeo con encabezado GOP (GOP Header) tan sólo al comienzo del vídeo, pero lo recomendable es indicar al compresor que añada un encabezado GOP antes de cualquier secuencia GOP.En la imágen de la izquierda puedes ver la opción que hay que configurar en tres de los compresores más utilizados actualemente:
Si por más que buscas entre los
parámetros
del compresor MPEG que utilizas no encuentras la opción que
modifica
la frecuencia del encabezado GOP, posiblemente lo indique antes de cada
GOP
de forma automática.
Los GOP's están formados por tres grupos distintos de fotogramas:
- I-picture (Intra frames)
(imágen-I,
cuadros internos): Son los únicos estrictamente necesarios. Cada
cuadro
es comprimido con un tipo de compresión llamada "Intra-frame DCT
coding" (codificación interna de cuadros DCT por
transformación discreta
de coseno) Si nuestro GOP tan sólo contara con cuadros-I
tendríamos
una secuencia de JPG's, el llamado Motion JPEG o MJPG (JPG en
movimiento)
Todo eso de ahí arriba
quiere
decir que la imágen se divide en cuadros NxN (en el caso de MPEG
de
8x8) pero la distrubución de la cantidad de información
no
se realiza de forma equitativa asignando la misma cantidad de
información
por cada píxel, sino que la cantidad de luminosidad y color son
analizadas
y los valores cercanos a cero se desprecian, asignando la cantidad
despreciada
a otros píxeles con mayor cantidad de información y, por
tanto, más imporantes. Esto tan complicado se puede entender
mejor echando
un vistazo a las siguientes imágenes:
Representación numérica
- P-picture y B-picture (Predictive frames y Bidirectionally-predictive frames) (imágen-P e imágen-B - cuadros de predicción y cuadros de predicción bidireccionales): Imaginemos un vídeo de 352x288. Para representarlo necesitamos un total de 101.376 píxeles por cada cuadro. Si tenemos grabada una puesta de sol, por ejemplo, lo único que va a cambiar entre cuadro y cuadro es el sol y además minimamente. Puesto que el sol se mueve a velocidad constante, digamos que el cambio es de 1.376 píxeles entre un cuadro y otro. ¿Porqué almacenar la infomación de los 100.000 restantes que NO cambian?
Esa es la función de las imágenes-P y las imágenes-B. Estas imágenes, en lugar de estar compuestas por los 101.376 píxeles lo están tan sólo por los 1.376 cambiantes. Los cuadros-P analizan los cambios con respecto a cuadros I u otros cuadros P anteriores, mientras que los cuadros-B pueden analizar los cambios de cuadros-P anteriores y posteriores ("B" de bidireccionales) alcanzando los mayores grados de compresión.
Pero hay que ser cuidadoso a la hora de elegir el número de cuadros P y, sobretodo, cuadros B. En el ejemplo de la puesta de sol, los cambios entre fotograma y fotograma son mínimos. Secuencias largas de cuadros-P y -B lograrán una estupenda compresión sin afectar la calidad, pero cuando el vídeo es cambiante, hay muchos cuadros en los que la información entre cuadro y cuadro cambia al 100%, las técnicas de análisis y predicción no resultan muy efectivas. Si el vídeo contiene mucho movimiento quizás convendría reducir o eliminar el número de cuadros-P y -B en cada GOP. Elegir el mejor número de cuadros-P y -B cambia con cada vídeo.
Para DVD la secuencia GOP contiene un máximo de 15 cuadros (también recomendada para formatos de vídeo en CD) y, normalmente, suele ser
I BB P BB P BB P BB P BB
Es decir, 1 cuadro I, 4 cuadros P y 2 cuadros B
entre
cuadros P. Si usamos TMPGEnc para la versión final, podremos
seleccionar
con una precisión extrema los cuadros I, P, B en cada GOP para
lograr
la mejor relación caldidad/compresión. (Ver 3.3
Setting/GOP
Structure)
Cuando usamos VBR en los MPEG2 (Ver 2. Flujo de datos y 1.5.4 Diferencias entre MPEG1 y MPEG2) en algún aparato que requiera un flujo de datos constante se puede presentar el problema de que, o bien el vídeo contenga más información de la que el lector es capaz de leer (overflow) o bien el flujo de datos sea menor que las especificaciones del aparato requieran y se produzca una carencia de datos (underflow) Un buffer de datos insuficiente producirá degradación de la calidad, saltos y/o parada en la reproducción de datos, pero debemos tener en cuenta que esos datos tienen que almacenarse antes de reproducirse, por tanto, a mayor búfer, más tiempo tardará el vídeo en comenzar la reproducción, así que deberemos tener en cuenta el tamaño de búfer del aparato dónde reproduciremos el vídeo para ajustarlo de forma correcta.
Podemos modificar ésta opción con
los
códecs TMPGEnc y bbMPEG.
Las
valores más habituales son:
- MPEG-1 de hasta 2.450 Kbit/s (VCD y CVCD): entre 40 y 58 KB
- MPEG-2 de hasta 2.450 Kbit/s (SVCD y CVD): 112 KB
- MPEG-2 de más de 2.450 Kbit/s (DVD): 224 KB
3.3 Perfiles y niveles (Profiles&Levels)
- Perfiles: Puesto que el "Perfil Medio" (main profile) admite cuadros-B (Ver 1.5.1 La secuencia GOP: I-frames, P-frames y B-frames) mientras que el "Perfil Simple" (simple profile) NO, será siempre recomendable seleccionar "Main Profile" (perfil medio)
- Niveles (levels):
3.4 Diferencias entre MPEG-1 y MPEG-2
Pues la única diferencia principal está en que, oficialmente, MPEG-1 usa flujo de datos constante (CBR) y vídeo no entrelazado y MPEG-2 puede usar flujo de datos constante (CBR) o variable (VBR). y puede ser entrelazado o no entrelazado
A favor:
- En formato CBR es 100% compatible con cualquier
sistema
operativo posterior a Windows 95 y jamás tendremos
ningún
problema con ningún programa que trabaje con vídeo.
- Mediante algunas aplicaciones podemos usarlo en
formato
VBR y lograr así vídeos con el mismo tamaño y
calidad
que con MPEG-2 (a "simple vista" y en teoría aunque no lo he
comprobado)
- Es el formato usado por el VCD / CVCD
En contra:
- En su estándar no recoge vídeo
entrelazado
y por tanto no es adecuado para tamaños de pantalla superiores a
288
puntos verticales.
A favor:
- Es el formato nativo del DVD y por tanto, de
aquí
a 4 días, cuando las grabadoras de DVD se compren como churros
será
el formato que todos querremos usar para crear nuestros DVD's
- Añade algunas especificaciones extra, como
búffer
de reproducción para evitar saltos en la reproducción,
vídeo
entrelazado
En contra:
- Hasta hace poco presentaba incompatibilidades
con
la muchas de las aplicaciones de vídeo (no lo importan o no lo
trabajan
correctamente, presentando desincronización, un incorrecto
cambio
de tamaño, etc)
- Necesitaremos un reproductor especial o
algún
códec instalado en el sistema (como el LSX-MPEG
Player o algún reproductor de DVD como Power DVD que
instalan
un filtro Direct Show) para poder ver MPEG-2, por lo que
deberemos
siempre incluir uno en el CD en el caso de que queramos distribuir el
vídeo.
- Sin una tarjeta de vídeo aceleradora de
MPEG-2
se necesita un equipo de más de 1 Ghz para ver un vídeo
MPEG-2
a pantalla completa. Un vídeo MPEG-2 356x288 a más de
2.500
Kbit/s se ve a saltos en un PII 266 *SIN* aceleradora. Con aceleradora
se
puede ver (por los pelos) hasta 720x576 a 4.500 Kbit/s
Para aprender a usar TMPGEnc tengo toda una sección. Pincha para acceder a ella *NO* dispone de versión Plug-in pero se pueden hacer varios "trucos" para que comprima cualquier tipo de vídeo desde cualquier fuente (ver DVD's y TMGEnc y Video Server Package)
(Ver Cinema Craft Encoder)
(Ver DivX)
4.4 Canopus Pro Coder