Donaciones

videoedicion.org es una web sin ánimo de lucro que se mantiene gracias a las donaciones de sus usuarios. Todas las donaciones, desde 1 €, son extremadamente valiosas.
[ PINCHA AQUÍ
PARA MÁS INFORMACIÓN
]

Haz una donación para ocultar este bloque
Welcome to videoedicion.org (v9). Please login or sign up.

10 de Noviembre de 2024, 20:25:12

Login with username, password and session length

Temas Recientes

206 Visitantes, 0 Usuarios

Colaboraciones

Estas empresas colaboran con videoedicion.org, bien ofreciendo algún descuento a los  usuarios que se registren usando estos banners o bien ofreciéndonos una pequeña comisión que nos ayudará con los gastos de la web.


 


Conversión de DVD a VCD con Gordian Knot

Iniciado por Ramón Cutanda, 06 de Abril de 2010, 12:43:30

Tema anterior - Siguiente tema

Yabba

Conversión de DVD a VCD con Gordian Knot.

La creación de VCDs a partir de DVDs o archivos AVI se suele hacer con el programa TMPGEnc. Por ejemplo, convertir un AVI a VCD suele consistir en simplemente arrastrar el archivo AVI al TMPGEnc y seleccionar ciertas opciones de compresión.

Este método funciona, desde luego, pero no permite optimizar del todo las posibilidades del formato. El TMPGEnc realiza un reescalado de la imagen original al formato VCD (352 x 288 píxeles). Añade además las bandas negras que sean necesarias para la imagen, de un modo automático.

Pero tanto si deseamos algunas posibilidades más avanzadas (por ejemplo, la inserción de subtítulos fijos en la imagen), como si simplemente queremos aprovechar al máximo el bitrate que aplicamos en la recompresión, necesitamos utilizar opciones más avanzadas.

¿Cómo se puede optimizar el bitrate? Pues, por ejemplo, controlando nosotros como se va a realizar ese reescalado. Para comprender mejor estos métodos, es necesario comprender cómo funciona la compresión MPEG (tanto en MPEG-1, como en MPEG-2, o las versiones de MPEG-4 como Divx, XVID, etc). Si ya tienes conocimientos de este tema, puedes saltarte esta parte, pero recomiendo leerla para comprender un poco mejor por qué hacemos las cosas.

La compresión MPEG

En los formatos MPEG, la imagen se divide, para su tratamiento y compresión, en trozos de 8x8 píxeles. En cada uno de esos trozos, se producen dos compresiones distintas. Por un lado, se produce una compresión de la imagen dentro de cada frame (un frame es el equivalente en video a los fotogramas en cine). Esta compresión es similar a la que se produce en imágenes fijas, como por ejemplo los métodos de compresión JPEG, y se denomina COMPRESIÓN INTRO-FRAME.

En una segunda fase, se produce una compresión llamada COMPRESIÓN INTRA-FRAME. Esta compresión consiste en la comparación entre los bloques 8x8 de frames consecutivos. Si la imagen no ha cambiado entre frames, simplemente se "apunta" en el archivo el hecho de que ese trozo es idéntico al de la imagen anterior. Si el trozo ha cambiado, se "apuntan" solamente las diferencias.

Hay otro nivel dentro de la compresión intra-frame, que consiste en el análisis de la imagen, para ver los trozos que siguen siendo idénticos o muy parecidos, pero que se han desplazado a otro bloque. En esta fase se "apuntan" en el archivo final de imagen unos datos llamados "vectores de movimiento", que simplemente nos cuentan cómo será ese frame a partir del frame anterior, es decir, muestran donde se han desplazado las imágenes.

Como se puede suponer, estos métodos requieren que haya un frame de referencia, a partir del cual podemos describir los frames posteriores, utilizando sus diferencias con el frame referente. Este frame de referencia se llama I-FRAME, y lleva solamente compresión intro-frame. Es decir, sería prácticamente como una foto fija JPEG. Los frames que se calculan a partir del I-Frame son los BFRAMES y P-FRAMES.

Llega un momento en que las diferencias son tan grandes que ya no se puede expresar una imagen como referencia de las anteriores (por ejemplo, cuando se produce un cambio de plano). En estos casos, se vuelve a generar un I-Frame y a partir de él continúa la secuencia.

Cuando avanzamos o rebobinamos la reproducción de un archivo MPEG (tanto MPEG-1, MPEG-2 , Divx, XVID ... todos son métodos MPEG), lo hacemos siempre "saltando" de un I-Frame a otro. Por eso se llaman también KEYFRAMES, o FRAMES CLAVE. Para mejorar esa capacidad de búsqueda en el archivo de imagen, cada cierto número de frames el codificador introduce un keyframe, haga o no haga falta.

El reescalado

Cuando recomprimimos una imagen al formato MPEG, tanto si viene de un AVI como de un DVD, tenemos que convertir el tamaño de esa imagen al estándar de VCD. Si por ejemplo tenemos un original proveniente de DVD, a 720x576 píxeles, tenemos que convertir esa imagen a 352x288 píxeles.

Si os fijáis, no es exactamente reducir a la mitad su resolución. La mitad de 720x576 es 360x288, NO 352x288. Si simplemente reducimos al tamaño VCD, obtenemos un error en la relación de aspecto, es decir, se verá la imagen ligeramente "achatada".

Fijaos en estas dos imágenes. Por motivos de espacio no las pongo con su resolución original, sino simplemente para que veais la diferencia en la relación de aspecto. Las dos provienen de un original a 720x576, pero la de la arriba se ha reducido a la mitad, respetando su relación de aspecto, y en la de la abajo se ha simulado una conversión directa al estándar VCD.

Como veis, la imagen inferior es más estrecha con respecto a la superior, que conserva la relación de aspecto original.

Cuando simplemente abrimos un archivo .avi en TMPGEnc, el programa calcula automáticamente lo que debe hacer para evitar este efecto. Lo que hace es recortar ligeramente la imagen original, para que así, al reducir su tamaño, se respete la relación de aspecto original, aunque a costa de unos pocos píxeles.

El problema, en este caso, es que dejamos al programa decidir por su cuenta. No siempre la decisión es la más adecuada...

Y el problema se agrava en el caso de imágenes con una


relación de aspecto distinta de la que mostramos. En este caso la imagen tenía una relación de aspecto de 4:3, o 1,3333 , que es la estándar de PAL. Pero... ¿y si hay bandas negras?


Veamos este caso : Película bajada de Internet, en archivo AVI. Su tamaño es de 608x336 píxeles, relación de aspecto 1.815. ¿Qué haría el TMPGEnc, de forma automática, en este caso?

Pues reduciría una línea de 1 píxel en la imagen original. Probablemente recortaría por abajo, dejando la imagen original en 608x336 píxeles, y la relación de aspecto en 1,814. El error es despreciable, no se podría captar por la vista humana. En un segundo paso, reduciría el tamaño de forma proporcional, para dejarlo en 352x194 píxeles, manteniendo la relación de aspecto en 1,814. En un tercer paso, añadiría bandas negras a la imagen, y comprimiría para tener, finalmente, un archivo MPEG de salida con una relación de aspecto correcta.

Hasta aquí todo perfecto, ya que la imagen no ha sufrido distorsión. Pero... ¿Qué ha pasado durante la compresión?

Como vimos antes, la compresión MPEG funciona dividiendo la imagen en bloques de 8x8 píxeles. Veamos sobre la imagen como queda dividida:

Ésta es la imagen final de la película tras ser comprimida con el TMPGEnc.

Pero veamos un detalle de la esquina superior izquierda, junto con una guía que nos muestra como se divide la imagen en bloques al comprimir.

Como veis en la rejilla, al hacer el reescalado de forma automática, hay una línea de bloques donde tenemos en parte banda negra y en parte imagen.

Aunque parezca mentira, esta es una de las maneras más fáciles de aumentar innecesariamente el tamaño del archivo. La compresión se produce al detectar diferencias entre frames, y también al detectar la dirección en

la que se mueve esa diferencia. Esas dos líneas de imagen en el bloque negro se comprimen de una manera muy poco eficiente, ya que por necesidad allí hay siempre grandes diferencias, y mucho movimiento. Un bloque de 8x8 píxeles donde el movimiento y las diferencias se "agrupan" se comprime mucho más eficientemente, y el tamaño final del archivo es menor. Podemos por tanto usar un bitrate más elevado, y en consecuencia, conseguir más calidad, si controlamos exactamente el tamaño de la imagen.


Este es otro frame de la misma película, tras comprimirlo en TMPGEnc pero siguiendo el método que viene a continuación. Como veréis en la imagen con rejilla (en esta imagen es de 16x16, que es la configuración que adoptaremos por seguridad en el Gordian Knot), ahora se ajusta exactamente a los bloques para la compresión MPEG. Evidentemente las bandas negras ocupan ahora un espacio despreciable, ya que son siempre iguales.


(Por cierto, esto se aplicaría exactamente igual tanto a MPEG-1 como a MPEG-2 ... o a Divx, Xvid, etc. ... )

¿Qué se ha perdido para conseguir esto? Pues... exactamente dos líneas por arriba y dos por abajo. Totalmente imperceptible a la vista. Lo veréis con más claridad más adelante, con más ejemplos.

Otras mejoras previas a la compresión

En este manual emplearemos el Gordian Knot para generar un script AviSynth. Un script AviSynth (de extensión .avs), es un simple archivo de texto en el cual se invocan determinadas funciones del programa AviSynth, o incluso otras funciones creadas por terceros pero compatibles con este programa.

AviSynth tiene prácticamente toda la funcionalidad de Virtual Dub y además otras muchas opciones añadidas, y además es capaz de abrir cualquier tipo de archivo. Funciona sirviendo frames tratados y descomprimidos a otro programa. La ejecución de un script AviSynth desde un programa como TMPGEnc ocasiona que el AviSynth le "pase" al TMPGEnc los frames de la película que hemos programado, uno por uno y además con el tratamiento que queramos. Podemos cortar partes de la imagen, reescalar, aplicar filtros para reducir el ruido y evitar la creación de macrobloques, e incluso cosas tan útiles como cambiar sobre la marcha el frame rate de una película (y así convertir una película NTSC a PAL), o desentrelazar la imagen en el caso de que nuestra película esté entrelazada.

No veremos todas esas opciones, porque el manual se haría demasiado largo. De todos modos, en la página principal de AviSynth tenéis un tutorial con la aplicación de todos los filtros estándar, y muchos de los filtros hechos por terceras personas.

Los filtros que sí usaremos serán, principalmente, los de subtítulos y desentrelazado. También las opciones estándar de cambio de frame rate, reescalado, crop ...

Programas que utilizaremos :

GORDIAN KNOT : Yo estoy usando en este momento la versión 0.27 , aunque creo que hay ya una versión 0.28 disponible, que sin embargo ha dado al parecer algunos problemas. Se puede encontrar en http://www.doom9.org , e incluye todos los programas necesarios : AviSynth, Virtual Dub, NanDub e incluso el VirtualDubMod (que será útil para archivos .ogm). También incluye programas para extraer la imagen de un DVD. Por cierto : al instalar el VobSub (es una parte de la instalación de Gordian Knot) no olvidéis activar la instalación de TextSub, que nos será útil para colocar subtítulos fijos en la imagen. También conviene instalar el programa SubResync , que nos permitirá elegir el color, tipo de letra, y hasta la posición en pantalla de los subtítulos.

SmartRipper : El Gordian Knot trae incluido un ripper llamado DVDDecrypter, pero yo lo encuentro bastante complicado. Prefiero con mucho el SmartRipper.

TMPGENc : Bueno, TMPGEnc o lo que uséis para comprimir a MPEG-2. El manual tratará de cómo preparar un .avi para comprimirlo, después se puede aplicar a cualquier compresor o a cualquier template. Tanto para KVCD (que es lo que yo uso) como para CVCD o directamente VCD.

ReadAVS : Si el TMPGEnc os da problemas al abrir el archivo .avs (algo que haremos más adelante), deberíais instalar este programa...

1º paso -. Ripeo de la película

Ejecutamos el SmartRipper . Cuando haya leído la estructura del DVD, aparece una ventana donde debes escoger un directorio ( TARGET ) donde grabar el contenido del DVD. Escogiendo como Rip-Method "Movie" , verás que te aparecen varias "Program Chain" ... esto se refiere a las distintas secuencias de video que pueden aparecer en un DVD, desde los menús hasta los extras. Generalmente, como es lógico, la secuencia más larga será la película, y es la que debes escoger .

Pulsa Settings y asegúrate de que la opción Copy IFO files está marcada.

Pulsando Start , como su propio nombre en inglés indica, empieza el ripeo.

Según tu lector de DVD, tu ordenador, y si la peli está codificada contra copia (que suele ser lo más habitual) , el proceso puede llevar hasta 30 minutos.

El Gordian Knot incluye por si hay problemas con el SmartRipper otro programa llamado vStrip ... pero mejor usar SmartRipper, más sencillo y menos dolores de cabeza.

2º paso -. Creación de un proyecto de DVD2AVI

Una vez terminado el ripeo, ya podemos cerrar el Smart Ripper. Ejecutamos el Gordian Knot y pulsamos el botón que nos abrirá un subprograma contenido en el Gordian, llamado DVD2AVI

Para empezar hay que cargar los VOBs que extraímos del DVD. Pulsa F3 y busca el directorio donde se extrajo el DVD. Verás una serie de ficheros con extensión .vob , selecciona el primero y el programa automáticamente busca los siguientes.


horizontales negras a través de la imagen, como en la imagen de arriba, entonces aunque diga que
es entrelazado en realidad la imagen es progresiva, y aquí hemos acabado con este paso. Si las ves, prueba a ir en el DVD2AVI a VideoField operationSwap field order para intercambiar el orden de campos. Miramos de nuevo el preview y si la cosa ha mejorado la dejamos así, si no hay mejora volvemos a dejar el Field operation en None y ya arreglaremos la cosa más adelante.

Frame rate=29.970 fps Pues es NTSC. Esto sólo ocurriría con DVDs de otras zonas, USA o

Japón generalmente, aunque en algunos países latinoamericanos se venden DVDs en NTSC también. Deja que el preview corra un par de minutos y échale una ojeada al Video Type . Si muestra que es Film a un porcentaje igual o mayor al 95% entonces puedes activar la opción Forced Film como se muestra en esta imagen . Lo mismo si pone simplemente Film .

Si el porcentaje es menor hay que aplicar más adelante Telecine Inverso (IVTC) , en ese caso apunta que hay que hacerlo para no olvidarlo.

Frame rate=23.976 En este caso es NTSC también, pero ha pasado por un proceso llamado Telecinado. Al igual que si el porcentaje era menor del 95%, hay que aplicar IVTC más adelante. Lo mismo, si el Video Type es NTSC

El siguente paso es el demultiplexado del audio. Si rippeaste ( vaya palabro me he inventado ) con SmartRipper, tendrás un fichero info en el mismo directorio en el que tienes los VOBs. Normalmente el fichero se llamará Vts_XY_INFO.txt, siendo XY los mismos números que llevan los ficheros VOB. Ábrelo con el Notepad y localiza la selección de streams de audio.

***************

* Stream Info * ***************

Stream[001] X=[[0xE0] Video NTSC 720x480] [] [] [] [] Stream[002] X=[[0x80] Audio English AC3(6Ch) 48kHz ] [] [] [] [] Stream[003] X=[[0x81] Audio Français AC3(6Ch) 48kHz ] [] [] [] [] Stream[004] X=[[0x20] Subtitle English ] [] [] [] [] Stream[005] X=[[0x21] Subtitle Español ] [] [] [] [] Stream[006] X=[[0x22] Subtitle Not Specified ] [] [] [] [] Stream[007] X=[[0x23] Subtitle Not Specified ] [] [] [] [] Stream[008] X=[[0x??] Others] [] [] [] []

Lo que nos interesan son los streams de audio. En este caso particular, la película tiene dos distintos audios, inglés y francés, en formato Ac3 de 6 canales ( o sea, Dolby Digital ) . El audio en inglés es el Stream[002] y el francés el Stream[003].

Bueno, el DVD2AVI ignora para la selección de audios la pista de video, por lo cual el audio en inglés correspondería en este caso a la pista 1 ( TRACK 1 ) y el francés , a la pista 2

Selecciona la pista que te interesa en este menú . En este caso estamos seleccionando el audio en inglés.


Ve ahora al submenú Dolby digital y selecciona Decode y Dolby Surround Downmix para que el DVD2AVI nos dé un fichero WAV con el audio en estéreo y la información de Dolby Digital codificada en formato Dolby Surround Prologic.

Volvamos ahora a la imagen, una vez configurado el sonido.

Asegúrate de que la opción YUV esté marcada en el submenú VideoColor space , así la cosa irá más rápida.


Ahora pulsa F4 para crear un proyecto de DVD2AVI que usaremos en el siguiente paso. Cuando haya acabado ( dale una media hora, de todos modos te va mostrando lo que te queda de tiempo ) , puedes cerrar el DVD2AVI . Pero no borres ninguno de los archivos .vob pues los usaremos enseguida. Tal vez sea buena idea escuchar el archivo .wav para asegurarse de que no nos hemos confundido al escoger la pista del idioma que nos interesa.

Una vez hecho, tendremos en la carpeta seleccionada dos ficheros : un .d2v con el proyecto de video, y un fichero .wav con el audio de la película.

Volvamos ahora al Gordian Knot.


3º paso : Reescalado y crop.

Abrimos el proyecto .d2v que creamos en el paso anterior, pulsando este botón

Al abrir el archivo, se abrirá una ventana con la imagen, que debemos dejar abierta. Es la ventana donde se van a reflejar los procesos a los que vamos a someter al archivo original.


Pasamos a la pestaña BITRATE, donde apuntaremos la duración de la película.

También conviene que nos fijemos en el FRAME RATE del archivo original. Los frame rates distintos de 25 FPS suelen dar problemas en los DVDs de sobremesa, por lo cual es conveniente que convirtamos nuestra película a esa velocidad de reproducción. Puede que en nuestro DVD se vea bien, pero si quieres poder prestárselo a algún amigo,... los 25 fps son garantía de que siempre se verá bien. Como veis, yo tengo que convertir mi archivo.


Pasaremos ahora a la pestaña RESOLUTION.
Vayamos por partes...

Este cuadro nos permite elegir una resolución en la imagen de entrada. Como la imagen proviene de un DVD, debemos simplemente escoger PAL o NTSC según nos haya informado anteriormente el DVD2AVI.

El siguiente cuadro nos permite escoger el ASPECT RATIO de la imagen original. Aquí pondremos de nuevo lo que nos haya informado el DVD2AVI, o sea, PAL o NTSC anamorphic o non-anamorphic. Podemos comprobar que la elección es correcta en la ventana del DVD2AVI que tenemos detrás, seleccionando View Resized como se ve en la imagen

Ahora debemos configurar la resolución de salida, en el cuadro OUTPUT RES. Debemos, eso sí, configurar el tamaño de salida para el estándar VCD. Para ello debemos mover el selector hasta encontrar un punto en el que el recuadro WIDTH muestre el valor 352 (resolución horizontal VCD). También debemos configurar los valores W-MODUL y H-MODUL a 16. De esta manera limitamos las resoluciones de salida a múltiplos de 16, y así conseguimos el efecto que deseamos: que la imagen y las bandas negras coincidan siempre en bloques distintos.

Finalmente, en el cuadro CROP, configuraremos el recorte de la imagen. Vamos a perder un poco de imagen por los lados y/o por arriba y abajo, para que al efectuar el reescalado se conserve la relación de aspecto y además las bandas negras ocupen bloques enteros.

El botón AUTO CROP nos elimina automáticamente las bandas negras si la imagen original las traía. En la ventana de imagen que dejamos atrás, veréis que se va produciendo una búsqueda en distintos puntos de la película, hasta encontrar el valor adecuado. Después pasamos a marcar el apartado SMART CROP ALL. Una vez pulsado,

Gordian Knot calcula automáticamente los parámetros de reescalado y crop

necesarios. En este caso, la película se ha cortado desde su tamaño original al tamaño de 608x332. Este tamaño se reduce proporcionalmente a 352x192, con un error en la relación de aspecto del -0.1%. Errores de hasta el +-0.3% son aceptables.

Pues ya tenemos hechos todos los cálculos. Es el momento de usarlos para generar un script AviSynth.

Para ello acudimos a la ventana de imagen que dejamos atrás. Vereis un botón llamado SAVE and ENCODE. Tras pulsarlo, nos aparece esta ventana :



Aquí haremos muy poca cosa. Si hay que hacer algún cambio, lo haremos más adelante en el script. Solamente es necesario configurar el método de reescalado, en el apartado RESIZE FILTER. El método más recomendable, en mi opinión, es el NEUTRAL BICUBIC. Los métodos anteriores en la lista dan poca calidad, y los posteriores dan una imagen demasiado definida, que tiende a producir compresiones de un tamaño excesivo. Además, tarda mucho en aplicarse. El Neutral Bicubic es un término medio muy aceptable, de buena calidad y en un tiempo razonable.

Los demás parámetros, dejadlos tal como los veis aquí.

Podemos previsualizar el resultado, aunque no nos va a decir mucho. Veremos la imagen, en su nuevo tamaño, tal como se le va a pasar al TMPGEnc.

Pulsamos SAVE y guardamos el script AviSynth. Lo usaremos en el siguiente paso, así que hay que recordar donde y con qué nombre lo hemos grabado... La extensión será siempre .avs .

A partir de este punto, podemos ya pasar a la recompresión en TMPGEnc. O al menos, podemos si no necesitamos hacer ningún ajuste posterior a la película. En el caso que yo he elegido para el manual, es necesario ajustar la velocidad de reproducción para adecuarla al estándar PAL. Si no tienes este problema puedes saltarte la parte siguiente, si no ... vamos allá.

Frame rate y entrelazado.

Como habréis visto en el ejemplo anterior, el archivo que estaba usando no tenía una velocidad de reproducción estándar en el sistema PAL. De hecho la velocidad es estándar, pero para el sistema de televisión norteamericano (NTSC). La velocidad de frame es de 23,976 frames por segundo, que es el estándar NTSC para películas. Es decir, es equivalente a los 24 frames por segundo que vemos en el cine.

¿Por qué ocurre esto? Pues porque los estándares de televisión y los de cine nunca coinciden. El sistema PAL funciona a una velocidad ligeramente superior a la del cine (25 frames por segundo) y el sistema NTSC, a una velocidad bastante superior (29,97 fps). Por lo tanto, hay que convertir esos 24 fps de la película en cine a las velocidades de los sistemas de televisión, para que se puedan visualizar en los televisores.

La conversión al sistema PAL es bastante sencilla : se acelera ligeramente la película, y se consiguen así los 25 frames por segundo. La película dura, por tanto, menos tiempo en video o DVD que en el cine... y todo va ligeramente más acelerado, pero es tan poco que no nos damos cuenta. Y este es el sistema que veremos más adelante para convertir esas pelis a 24 o 23,976 fps a nuestro estándar...

La conversión al sistema NTSC es bastante más complicada. Pasar de 24 o 23,976 fps a NTSC requeriría acelerar la película unos 5 frames por segundo... un 20%. Bastante notorio, queda muy mal y la peli se nos pasaría en un suspiro. Una peli de 90 minutos se quedaría en 72... (acabo de hacer los cálculos de memoria, espero no equivocarme pero por ahí andan las cosas). En ese caso se hace un proceso bastante complicado, que consiste en generar frames "fantasma". El proceso es bastante complicado, pero podemos decir que 1 de cada 5 frames es un frame "fantasma", generado a partir del 4º y 5º frame real de la película. De este modo se consigue que la peli dure exactamente lo mismo que en el cine ... o casi, ya que en el cine la película va a 24 frames por segundo, y por motivos de compatibilidad, para hacer esta conversión, se debe ralentizar muy ligeramente y dejarla en esos famosos 23,976 fps.


Esta conversión se realiza para su emisión por televisión. Sin embargo, un DVD moderno no necesita realmente esa conversión. Un DVD es capaz de hacer sobre la marcha las conversiones necesarias. De hecho, internamente el DVD en sistema NTSC funciona a 23,976 fps... aunque la peli esté a la velocidad normal NTSC, ya que internamente es capaz de hacer el proceso inverso, y eliminar los "frames fantasma". Por lo tanto, y según la región de la que proceda el DVD del que sacamos la película, podemos encontrarnos estas posibilidades :

Velocidad de reproducción=25 fps. Es nuestro sistema de televisión, así que no hay que hacer nada.

Velocidad de reproducción=23,976 fps. Es la velocidad de la película adaptada al sistema NTSC. Simplemente debemos acelerar ligeramente la imagen, y después acelerar también el sonido para adaptarlo. Lo veremos más adelante.

Velocidad de reproducción=29,97 fps. La película contiene "frames fantasma",que podemos eliminar. La reproducción de esta película, aunque esté a 29,97 fps, se produce a la misma velocidad que una película a 23,976 fps, por lo cual, una vez eliminados los "frames fantasma", hay que acelerarla a 25 fps y hacer lo propio con el audio.

Todas estas acciones sobre la imagen se pueden realizar en un solo script AviSynth. Las acciones sobre el sonido se han de hacer con un programa externo (bueno, se pueden hacer con AviSynth, pero creedme... es mejor usar otro programa, por ejemplo el BeSweet, como ya explicaré).

Todos estos supuestos se basan en el hecho de que estamos convirtiendo UNA PELÍCULA. Pero no siempre tiene por qué ser así, podemos a lo mejor convertir una captura de televisión en sistema NTSC o PAL. En el caso de una captura de televisión ya no podemos usar el método de los "frames fantasma", porque en realidad no existen esos frames... es una señal de televisión con los 29,976 frames por segundo REALES. Y además, tanto en el caso del PAL como del NTSC, se da un problema nuevo, que es el problema del entrelazado.

La televisión, tanto en NTSC como en PAL, se basa en la emisión de 2 imágenes ligeramente distintas, llamadas "campos", que combinadas forman un frame, al contrario que en el cine, donde cada cuadro de imagen es único (esto se llama un "frame progresivo", y lo de la tele, "frames entrelazados"). Como los sistemas de captura digitales no entienden más que de frames progresivos, se producen unos errores en la imagen que seguro habreis visto en muchas pelis que os hayáis bajado. Lo podéis ver en la imagen.

Aquí se han combinado dos campos ligeramente distintos para dar una única imagen progresiva. El resultado son esas líneas "fantasma" que se ven claramente. Evidentemente la imagen "fantasma" se produce en las zonas que muestran diferencias entre campos, o dicho más sencillamente, en todo lo que se mueve en la imagen.



Hay muchos medios para evitar esto, mejores y peores. Algunos métodos simplemente mezclan los campos entre sí, en vez de combinarlos como ocurre por defecto. Esto produce imágenes bastante borrosas. Otros métodos más complejos utilizan ciertos algoritmos para evitar este efecto, y lo hacen muy bien... pero lo hacen sobre toda la imagen, tanto donde hay movimiento como donde no lo hay. Como resultado, se pierde definición en la imagen.
Hay un método que evita, en lo posible, la imagen borrosa y que además es "inteligente"... sólo actúa donde es necesario, y evita las zonas sin movimiento, donde no hay efecto entrelazado. Se utiliza desde el script AviSynth, y es el plug-in DECOMB. (Este plug-in se instala directamente con Gordian Knot, pero si por cualquier motivo no lo tenéis, no hay más que buscar con algún buscador en Internet y bajarse el archivo DECOMB.DLL . Este archivo lo ponéis en el directorio de Gordian Knot, y listo)

Vamos a ver las acciones que hay que emprender en cada uno de los casos. En todos ellos hay que editar el script .avs que produjimos en el caso anterior, con un simple editor de textos. El Notepad de Windows vale perfectamente, pero hay que acordarse, al grabar el archivo, de seleccionar "Todos los archivos" en el cuadro de grabación... si no, lo grabaría con extensión .txt, y no nos valdría de nada. El archivo tiene que tener una extensión .avs .

Os mostraré un script básico en AviSynth :

# Created with Gordian Knot # # http://gknot.doom9.org# # PLUGINS LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\mpeg2dec.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\decomb.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\IVTC.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\Avisynth_Spatial.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\GreedyHMA.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\TomsMoComp.dll")#LoadPlugin("C:\WINDOWS\System32\vobsub.dll")#LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\SimpleResize.dll")# # SOURCE mpegsource("c:\mis documentos\mipeli.d2v")# # TRIM #trim(startframe,endframe)# # IVTC #Telecide().Decimate(5)# or use #IVTC(44,11,95)#GreedyHMA(1,0,4,0,0,0,0,0)# # DEINTERLACING (1)#FieldDeinterlace()#TomsMoComp(1,5,1)# # CROPPING crop(0,0,608,335)# # DEINTERLACING (2)#SeparateFields().SelectEven()# or maybe#GreedyHMA(1,0,0,0,0,0,0,0)# # # SUBTITLES #VobSub("FileName")# # RESIZING BicubicResize(352,194,0,0.75)# # DENOISING: choose one combination (or none)# 1) little noise (fast)#TemporalSmoother(2,1)# # 2) medium noise (slow)#SpatialSoftenMMX(1,4,6,false,false,4,4,6,8)#TemporalSmoother(2)

# # 3) heavy noise (very slow, you have been warned)#SpatialSoftenMMX(2,4,6,false,false,4,4,6,8)#TemporalSmoother(3)#SpatialSoftenMMX(1,4,6,false,false,4,4,6,8)# # BORDERS #AddBorders(left,top,right,bottom)# # COMPRESSIBILITY CHECK # !!!!Snip Size now has to be 14 for use in GKnot!#SelectRangeEvery(280,14)# # FOOL CCEnc #ResampleAudio(44100)

Este script está generado en Gordian Knot. El Gordian crea el script como una plantilla, para poder cambiarla luego a nuestra manera. Para ello genera líneas con una especie de "sugerencia de uso", y las marca con el carácter # . Ese carácter hace que la línea se trate como un comentario, y no como un comando. Vamos a retirar ese carácter de algunas líneas, y a editarlas ... y tal vez a crear alguna línea nueva. Pero antes voy a explicar por encima las líneas que ya están activas, para que entendáis como funciona el AviSynth :

mpegsource("c:\mis documentos\mipeli.d2v")crop(0,0,608,335)BicubicResize(352,194,0,0.75)

Estas 4 líneas hacen todo el trabajo que nosotros hicimos "a mano" en el caso anterior. Vamos una por una:

mpegsource("c:\mis documentos\mipeli.d2v") : Este comando abre el proyecto que creamos. crop(0,0,608,335) : Este comando corta las líneas necesarias para dejar la imagen a unas dimensiones de 608x335 píxeles BicubicResize(352,194,0,0.75) : Este comando reescala la imagen al tamaño final, de 352x194 píxeles.

Veamos qué cambiaremos o crearemos según como sea nuestra película :

1 – Película a 24 o 23,976 fps, sin entrelazado : En este caso solamente vamos a acelerar la peli a 25 fps. Para ello usaremos un comando de AviSynth, llamado ASSUMEFPS, que cambia la velocidad de reproducción. Lo ponemos, por ejemplo, a continuación del AviSource para que quede así :

avisource("F:\eMule\Incoming\Whats Up Doc 1972 Dvdrip Xvid Fragment.avi") AssumeFPS(25)

2 – Película a 29,97 fps, sin entrelazado : Aquí debemos restaurar la película a la velocidad original de 23,976 fps, y en una segunda etapa, haremos el paso anterior : acelerar a 25 fps. Esta vez deberíamos ponerlo al principio del todo, ya que ... así tendremos menos frames que tratar, y todo irá más rápido. Además, Gordian Knot ha sido tan amable que nos ha preparado ya las líneas para que no tengamos que hacer casi nada.


Primero debemos activar el plug-in que hará toda la magia. Es el DECOMB. Quitamos el símbolo de comentario de esta línea :
LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\decomb.dll")

Y luego editamos esta otra, donde tenemos casi todo preconfigurado :

# IVTC #Telecide().Decimate(5) Sólo tenemos que borrar un par de cositas. Quitaremos el símbolo de comentario, y el comando

Telecide. Quedaría así :

# IVTC Decimate(5) Luego aplicamos el paso anterior, y quedaría todo así : # IVTC

Decimate(5) AssumeFPS(25)

3 – Película a 24 o 23,976 fps CON entrelazado. En este caso tenemos que activar el plug-in DECOMB, como en el caso anterior, y editar la línea de los comandos IVTC. Ahora tenemos que borrar el comando Decimate. Quedaría así :

# IVTC Telecide() AssumeFPS(25)

Como veis, ya activamos a la vez la aceleración a 25 fps. 4 – Película a 29,97 fps CON entrelazado. Haremos más o menos lo mismo que en el caso sin entrelazado, sólo que esta vez no borraremos el

comando TELECIDE. Quedaría así :
# IVTC

Telecide().Decimate(5) AssumeFPS(25) No olvidéis activar el plug-in DECOMB ... 5 – Captura de TV PAL (con entrelazado, ya que viene de TV...) De nuevo debemos activar el plug-in DECOMB. Después, sólo hay que eliminar el símbolo de comentario y el comando DECIMATE de la línea IVTC. Quedaría así :



# IVTC

Telecide()

No usamos el AssumeFPS porque la imagen YA ESTÁ a 25 fps...


6 – Captura de TV NTSC (con entrelazado, viene de TV... )

Aquí no podemos eliminar frames fantasma, ya que no los hay. Así que debemos usar un nuevo comando, llamado ConvertFPS. Lo que hará este comando es generar frames a una nueva velocidad, simplemente mezclando los frames del original. El resultado tendrá la misma duración que el original, a pesar de ir a una velocidad distinta. Como contrapartida, la imagen se verá algo borrosa, debido a la mezcla, pero, por si os sirve de consuelo, os diré que es el mismo método que hacen los carísimos conversores NTSC-PAL que se usan en televisión.

Antes de cambiar la velocidad, de todos modos, nos ocuparemos del efecto de imagen entrelazada. De eso se ocupa el comando TELECIDE.
La cosa quedaría así:

# IVTC Telecide() ConvertFPS(25)

De nuevo, no hay que olvidar activar el plug-in ...

Una vez terminada la edición, grabamos el archivo .avs . No olvideis grabarlo con la opción TODOS LOS ARCHIVOS del Notepad, así se grabará como .avs ... si no lo haceis así, se grabará como .avs.txt y no serviría.

Si quereis comprobar que todo vaya bien, podeis abrir el archivo .avs antes y después de estos cambios con el Virtual Dub. En FileFile information, podreis comprobar que la velocidad de reproducción y las dimensiones de la imagen son las correctas. Para mostraros un ejemplo, os pondré la información que daba el Virtual Dub de mi avs original, y la que me da del .avs tras efectuar los cambios :


El ejemplo está sacado de un.avi y no de un DVD, por eso aparece un codec XVID, pero para mostrar como se hace nos vale.

Como veis, ha cambiado el frame rate. Esta imagen es totalmente PAL,

conforme al estándar de televisión y de unas dimensiones apropiadas para un VCD.
Si quereis comprobar el efecto del plug-in de entrelazado (caso de que lo uséis, claro), podéis incluso reproducir en el Virtual Dub para verlo. El audio estará desincronizado, pero de eso nos ocuparemos luego.

Subtítulos fijos
Si queréis añadir subtítulos fijos a la imagen (es decir, NO flotantes, que no se pueden quitar con el mando a distancia del DVD), se puede hacer en el script AviSynth. Para ello debemos activar un plug-in que instalamos antes con Gordian Knot, llamado TextSub.

Para ello insertamos esta línea en la sección PLUGINS :

LoadPlugin("C:\ARCHIV~1\video\GORDIA~1\Textsub.vdf")

Recordad que debéis usar el directorio en el que tengáis el archivo TextSub.vdf . Si no estáis seguros, siempre podéis usar la búsqueda de Windows para localizar el directorio.

Para insertar los subtítulos, usaremos esta línea :

TextSub(subtitulos.srt,25)

Debéis poner el nombre de archivo, con su ruta si no está en el mismo directorio que el script, y además con el frame rate de los subtítulos. En este caso, como veis, están a 25 fps.

Si cambiáis la velocidad de reproducción del archivo, hay dos opciones : cambiar la velocidad de los subtítulos, o bien insertar los subtítulos ANTES de las líneas en las que se cambia la velocidad de reproducción. De esa manera, los subtítulos se incrustan según el frame rate original, y en una segunda etapa la imagen CON SUBTÍTULOS se convierte a la nueva velocidad.

TextSub acepta varios formatos, aunque el más sencillo y recomendable es el .srt (SubRip). El formato .ssa (SubStation Alpha) tiene la ventaja de que no necesita que le demos a TextSub la velocidad de frames de los subtítulos, ya que vienen expresados en el propio archivo de subtítulos, por lo cual es también recomendable. Además, en este formato podemos establecer las opciones que, en .srt, debemos hacer con SubResync, como veremos ahora ...

El filtro TextSub usa, por defecto, un color y tipo de letra bastante feo (salvo en formato .ssa, que usa lo que esté configurado en el archivo). Para mejorar esto, podemos usar la utilidad SubResync, incluída en la instalación de VobSub. Abrimos los subtítulos con este programa, y pulsamos el botón EDIT. Allí podremos cambiar cosas como el color, el tipo de letra, borde, sombra, espaciado, posición en pantalla...

De nuevo podéis usar el Virtual Dub para comprobar que todo se haya hecho correctamente. En esto, la experimentación os dará el mejor resultado...

De todos modos, es también posible (sólo para ciertos reproductores) usar subtítulos flotantes. Para ello os remito a otro manual que he hecho, donde se explica todo esto. También explica cómo usar dos bandas de sonido, consiguiendo así... casi un DVD, ¿no? ☺ Por cierto, para obtener el archivo de subtítulos a partir del DVD, necesitareis usar el programa SubRip. Al final del manual hay un apéndice donde se explica su uso.

4º paso -. Compresión a VCD conTMPGEnc

Bueno, o con lo que queráis... yo solamente he usado el TMPGEnc, así que no puedo hablar de otras opciones. También podeis usar vuestro formato favorito : VCD, CVCD, KVCD, creado o multiplexado como MPEG-1, como MPEG-2... a vuestro gusto. Con todo lo anterior solamente hemos preparado el archivo para que se comprima mucho mejor... Ahora hay que cargarlo en nuestro codificador favorito, y a comprimir. Lo único que se debe cuidar es que la relación de aspecto en TMPGEnc esté configurada a 1:1 (VGA) y NO a 4:3 u otras opciones.

Eso sí... yo personalmente suelo hacer por separado video y audio. Si habéis convertido la velocidad de reproducción no quedará más remedio, pero yo lo hago en todo caso. No me gusta como queda el sonido en TMPGEnc, y prefiero usar BeSweet. Hay manuales de uso de este programa en http://spanish.doom9.org , solamente os pondré más adelante un ejemplo de lo que hay que hacer para adaptar la velocidad de reproducción si nos hace falta.

En una etapa final se multiplexan audio y video, con las MPEG Tools de TMPGEnc o con bbMPEG ... a gusto del consumidor.

El sonido

Como os decía antes, suelo usar BeSweet para convertir el sonido al formato .mp2 , que es el que usaremos para el VCD. Por no hacer más largo esto, os recomiendo que veáis los manuales que tenéis en http://spanish.doom9.org . Solamente os voy a mostrar un pantallazo con la configuración para convertir la duración del sonido de 23,976 frames por segundo a 25, es decir, resincronizar el sonido.
Usaré el BeSweet que viene incluido en Gordian Knot, junto con un front-end llamado BeSweetGUI. El BeSweet es un programa MSDOS, pero el front-end permite programarlo desde Windows, sin tener que acudir para nada al símbolo del sistema. Podeis descargarlo desde http://spanish.doom9.org

Como veis, hay un preset ya configurado para la conversión del sonido. Usaremos este preset en los casos 1, 2, 3 y 4 que vimos antes. En los otros dos casos no hay que hacer ninguna conversión. Fijaos de usar este preset y no el otro, llamado NTSC2PAL (29.97 to 25.000), ya que incluso en los casos en los que el original está a 29,97 lo hemos convertido "internamente" a 23,976 antes de pasarlo a 25.

Finalmente, no quedaría más que multiplexar el archivo .m1v (video MPEG) con el .mp2 (audio MPEG) para conseguir un archivo .mpg final que podemos grabar con el Nero Burning ROM en modo VCD


Apéndice – Subtítulos ( opcional )

Primero, descargaremos e instalaremos el software necesario.

Subrip 0.97b

Éste programa nos permite convertir los subtítulos originales del DVD a un formato que los reproductores, como por ejemplo el BSPlayer, puedan comprender. Los subtítulos en el DVD van grabados no como texto, sino como ficheros .bmp... es decir, cada pantalla que vemos de subtítulo es internamente un archivo de imagen, uno para cada subtítulo en cada uno de los idiomas... Esto se puede hacer en un DVD, dado que en él tenemos todo el espacio del mundo para desperdiciar. En un modesto CD, es más práctico convertirlo a un fichero de texto, que como mucho ocupará unos 50 Kb.


La conversión la realiza el SubRip a través de un proceso conocido como OCR (Reconocimiento óptico de caracteres). Un proceso prácticamente idéntico al que realiza un scanner para sacar un fichero de texto a partir de un texto escaneado.


Esto quiere decir que debemos "enseñarle" al programa de OCR lo que significa cada dibujo que se encuentra, o sea, cada letra de nuestro alfabeto. Naturalmente, sólo tenemos que enseñarle una vez por letra, luego él se encarga de traducir las que coincidan.

Primero instalamos el Subrip (simplemente descomprimir el archivo que nos bajamos, y si queremos podemos poner un acceso directo al programa), y lo ejecutamos.

En FileOpen Vob(s) abrimos los Vobs que ripeamos antes del DVD.

Primero, en C debemos seleccionar la opción que vemos marcada, que nos habilita la conversión a texto usando el OCR incorporado en el SubRip.

En A escogeremos los .vob que pertenecen a la película, en nuestro caso tal como ripeamos antes con el
SmartRipper serántodoslos
ficherosconlaestructura
Vts_XX_Y.vob .

Y en B escogemos el idioma ... muchas veces ya nos viene indicado de qué idioma se trata, pero otras, como en el caso de la imagen, no es así ... bueno, podemos ver en el archivo Vts_XY_INFO.txt a qué pertenece cada stream, o más simplemente, usar el viejo método del ensayo-error ☺


Nos aparecerá esta pantalla, en la que se nos pregunta si vemos el texto con una fuente blanca sobre fondo negro. Si es así ( 99% de los casos ), contestamos que si, si no probamos las otras
pues, como veis. Eso si, siempre respetando las mayúsculas o minúsculas, si no, luego habrá errores.

Un truco: cuando le enseñes las comillas ( " ), primero te mostrará la primera comilla como si fuese un apóstrofo ( ' ) ... pues dile que es eso, un apóstrofo, el texto ripeado saldrá con las comillas de esta manera, ' ' , en vez del más habitual " ... pero eso se corrige al final, ya lo vereis.

Cuando acabe de aprender el abecedario la cosa irá mucho más rápida, en un momento habrá sacado todo el texto, que vereis en otra ventana que se abre en la parte inferior del SubRip

Cuando haya acabado, es importante grabar los datos que ha aprendido para futuros usos ... es decir, si queréis volver a ripear los subtítulos, o tal vez en otros idiomas, ya no necesitará volver a aprender el abecedario, ya que ya lo tiene grabado en un archivo. Lamentablemente los DVDs no traen todos el mismo formato de fuente, por lo que no nos suele servir la matriz de caracteres que tengamos grabada de un DVD a otro... pero al menos para hacer otro idioma nos ahorramos la parte tediosa del proceso.


Para ello hacemos... pues tal como veis en la imagen, le damos un nombre que identifique el DVD del que sacamos esta matriz de caracteres, y listo.

En la ventana del texto de salida podreis ver, en el menú, un apartado que indica "Correcciones". Si lo seleccionamos, veremos una ventana en la cual podemos seleccionar Reemplazar dos ' ' por " (recomendado) . Marcamos esta opción y nos corregirá el problema que mencionaba antes con las comillas.

Y una vez hecho esto, sólo nos queda grabar. Yo suelo usar siempre el formato nativo de Subrip, el formato .srt , simplemente por comodidad ... además me funciona muy bien con el BSPlayer, pero ... aquí ya es cuestión de gustos y de experimentar, lo cual os dejo a vosotros ☺

Ahora, si queremos sacar subtítulos en más idiomas, repetimos el proceso con otro stream de subtítulos (cargando la matriz de caracteres que salvamos antes), así hasta tener todos los idiomas que necesitemos.
Autor
Yabba

El spam de este foro está controlado por CleanTalk