PUBLICIDAD

Welcome to videoedicion.org (v8.3). Please login or sign up.

28 de Marzo de 2024, 11:16:50

Login with username, password and session length

Temas Recientes

522 Visitantes, 0 Usuarios

Compra y colabora

Si usas estos banners para hacer tus compras, recibiremos una pequeña comisión. ¡Gracias por colaborar!


 




Código VID15 para
un 15% en planes anuales


Compresión de vídeo digital en tiempo no real

Iniciado por Ramón Cutanda, 10 de Noviembre de 2006, 09:23:36

Tema anterior - Siguiente tema

Ramón Cutanda

Aunque este documento se publicó en noviembre de 2006 muchos de los conceptos tratados siguen siendo válidos.


¿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"
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 yLSX-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


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)


MPEG
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


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:
Representeación proporcional 


Representación numérica

(Matrices extraídas del programa TMPGEnc)
- 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)


Control de búfer
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


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):


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


MPEG-1
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.


MPEG-2
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


Compresores más utilizados


TMPGEnc
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
DVD's y TMGEnc y Video Server Package)


Cinema Craft Encoder
(Ver Cinema Craft Encoder)


DivX
(Ver DivX)


Canopus Pro Coder
(ver Canopus Pro Coder)

Autor: Ramón Cutanda

Respuesta rápida

Advertencia: No se ha publicado ninguna respuesta a este tema desde hace 365 días como mínimo.
A menos que estés seguro de que quieres responder, por favor, considera el empezar un nuevo tema.

Nombre:
Correo electrónico:
Atajos: ALT+S para publicar/enviar o ALT+P para previsualizar

PUBLICIDAD

El spam de este foro está controlado por CleanTalk