Manual QuEnc + AviSynth basico + DGPullDown
Sean bienvenidos a postear sus comentarios sobre el manual en el hilo de Peticiones, sugerencias y errores. Gracias.
Introduccion
El QuEnc es un programa que permite codificar a MPEG-1, MPEG-2, MPEG-4 ASP(seria equivalente a usar XviD o DivX) y el nuevo Snow experimental mediante la libreria libavcodec, parte del proyecto FFMPEG, es decir que es una GUI o interfaz grafica para esta. Su ultima version es la 0.72 y es libre y gratuito, al igual que los otros dos programas que se utilizan en este manual, constituyendo asi un metodo 100% gratuito de conversion. En si mismo el QuEnc no se ocupa de demultiplexar/decodificar el video de origen, ni posee filtros internos de ninguna clase, es decir que constituye unicamente un programa encoder(parte encargada de codificar de un CODEC). Todo esto se deja a manos del completisimo Avisynth, un programa gratuito destinado a realizar frameserver, cuya finalidad es la decodificacion de casi cualquier formato existente y la aplicacion de filtros, de los cuales incluye una enorme cantidad internos y posibilidad de utilizar externos. Cabe aclarar que no posee decodificadores/demultiplexadores propios, utiliza los instalados en el sistema, asi que de todas formas habra que poseer los decoders y splitters necesarios; su fuerte es la aplicacion de filtros, permitiendo toda clase de manipulacion sobre un video, para luego entregar los frames editados descomprimidos al programa encargado de la codificacion, en este caso el QuEnc. En este manual solo se abordara un uso muy basico de avisynth, como lo indispensable para poder cargar un video al QuEnc y un par de filtros usualmente necesarios. Para un manual exclusivamente dedicado a AviSynth pueden ver AQUI.
Descargas
QuEnc
AviSynth
DGPulldown
Creacion del script avisynth
El programa se configura enteramente desde un archivo de texto sin formato, tambien llamado script, el cual puede ser creado por ejemplo con el bloc de notas o similares, y debe ser guardado con extension AVS. En dicho texto se deben indicar los parametros de decodificacion y que filtros se aplicaran, teniendo en cuenta que el QuEnc codificara asi como vengan los frames desde avisynth. Por lo tanto ya se debe adaptar al video para que cumpla el estandar que estamos buscando, mendiante los filtros provistos. El AVS sera el archivo de entrada al QuEnc(unico formato soportado), permitiendo que este invoque al avisynth, y a su ves este carque el video, aplique los filtros y se lo entregue al encoder.
Ok, comensemos con los comandos para cargar un video, es decir los primeros que deben ir en el script:
AviSource("c:\carpeta\video.avi")
Para cargar un archivo AVI. Entre las comillas se indica la ruta completa al archivo, anque esta se puede obviar (solo se pone el nombre) si el fichero AVS esta en la misma carpeta que el mismo.
DirectShowSource("c:\carpeta\video.mp4", fps=25)
Para poder cargar otros formatos que no sean AVI se utiliza esta linea, que hace uso de DirectShow y asi permite demultiplexar/decodificar todo formato que posea un CODEC directshow adecuado instalado en el sistema, asi como tambien hace falta el splitter correspondiente, como en el caso del formato MP4 del ejemplo, donde es necesario el Haali Media Splitter.
Especificar los FPS del video de origen solo es necesario en ciertos casos de decoders directshow que fallan en informarlo, como cuando se trata de achivos ASF.
Si desean solo cargar el video, pueden agregar audio=false a la linea, quedando video.mp4”, audio=false), y viceversa con video=false.
Bien, ya saben como cargar el video, ahora a ocuparse de los filtros, de los cuales solo se explicaran dos, los absolutamente necesarios para crear un video compatible con los estandares MPEG-2 y MPEG-1(DVD, CVD, VCD, etc) y que a su ves mantenga el AR correcto. Estos son el Resize y el AddBorders. Del primero avisynth nos ofrece unas cuantas variantes, de las cuales las mas conocidas y usadas son Bilinear, Bicubic y Lanczos. Este filtro se usa para modificar la resolucion del video, para asi estirarlo o comprimirlo(espacialmente hablando) lo necesario hasta alcanzar la resolucion adecuada segun el estandar. En la mayoria de los casos no es posible lograr esto con solo redimensionar, sino se dañaria el aspect ratio(AR) del video y este se veria alargado o achatado; entonces para asi llegar a la resolucion definitiva hace falta completar los pixeles faltantes con bandas negras, para ello se usa el filtro AddBorders. Estos se invocan de la siguiente forma:
LanczosResize(ancho,altura)
BicubicResize(ancho,altura)
BilinearResize(ancho,altura)
Cual usar no es aleatorio, sino que depende de como vayan a codificar el video; el bilinear tiende a suavizar la imagen, esto significa que es el que menos detalle procesa de los tres, asi que es adecuado para cuando usen bitrates bajos, y/o cuando se reduce la resolucion. El Bicubic logra mayor nivel de detalle y por ende es ideal para cuando se aumenta la resolucion, por ejemplo en el formato DVD, ya que se logra una imagen mas nitida, pero solo es recomendable cuando habra suficiente bitrate como para codificar dicho detalle extra, sino puede ser mas conveniente el Bilinear. Y el Lanczos permite alzcanzar aun mas detalle y con mejor calidad que el Bicubic, solo recomendable para altos bitrates.
El otro filtro usado es:
AddBorders(v,x,y,z)
Donde cada una de esas cuatro letras representan la cantidad de pixeles que ocuparan las bandas negras contando desde cada uno de los cuatro margenes. Las que generalmente se usan son x y z, que representan a las bandas inferior y superior, las otras se dejan en cero.
Estos dos filtros pueden ser usados de diferente forma y con diferentes combinaciones segun el AR que busquen conseguir y comparado con el que tiene el video de origen.
Veamos algunos ejemplos de como se aplican para conseguir algunas(creo que las mas utilizadas) de las resoluciones adecuadas a la salida de avisynth(entrada de QuEnc), no considero todas las variantes porque sino el manual se alarga mucho. El uso del Lanczos es meramente como una cuestion de ejemplo. Como podran ver en todos los casos como el objetivo es un DVD NTSC la resolucion resultante a la salida de avisynth es 720x480, perfectamente compatible.
Partiendo de un AVI con AR de 2.35(ej: 640x272)
Hacia un DVD NTSC 16:9
LanczosResize(720,352)
AddBorders(0,64,0,64)
Hacia un DVD NTSC 4:3
LanczosResize(720,272)
AddBorders(0,104,0,104)
Partiendo de un AVI con AR de 1.77(16:9)(ej: 624x352)
Hacia un DVD NTSC 16:9
LanczosResize(720,480)
Hacia un DVD NTSC 4:3
LanczosResize(720,352)
AddBorders(0,64,0,64)
Un dato mas muy importante, cuando vayan a redimensionar, piensen en los siquiente para el resize: si su DVD sera 16:9 o 4:3 la resolucion de reproduccion horizontal del mismo sera (altura del video)*16/9, (ej, 480*16/9=~853 o 480*4/3=640), y esa es la resolucion horizontal real que tendra el video cuando sea reproducido(la vertical no cambia), usenla para calcular cual sera la resolucion de resize vertical, y recuerden que siempre el resultado debe cumplir con el estandar. Vean los ejemplos de arriba, en el primero, 720/352 no da ni cerca de 2.35, en cambio 853/352 si da correcto, se usa 720 porque es la compatible con el estandar DVD.
Las resoluciones que hay que respetar para cada estandar pueden verlas aqui(proximamente). Tambien revisen ese enlace para saber mas sobre los diferentes estandares y como se obtienen.
Un ejemplo de un scrip terminado:
AviSource("c:\carpeta\video.avi")
BicubicResize(720,352)
AddBorders(0,64,0,64)
Finalmente guardan el archivo como TXT y luego le modifican la extension a AVS, y ya esta listo para ser utilizado como script de avisynth.
Configurancion QuEnc
Las imagenes de ejemplo corresponden a una codificacion a MPEG-2 NTSC cumpliendo el estandar DVD.
Apenas ejecutamos el programa nos aparece la simple ventana principal, donde se puede cargar el archivo AVS desde "Source AVS File", una ves lo hayamos cargado se pueden corroborar unos pocos datos de como ingresa el video al encoder mediante el boton con una "I", lo mas importante aqui sera asegurarse que la resolucion sea la adecuada segun lo que queramos conseguir deba cumplir con algun estandar.
En "Destination File" se especifica la ruta donde se guardara el archivo resultante, que en el caso de estar codificando a MPEG-1 o -2 sera MPG(puede guardarse tambien como m1v o m2v si solo contendra video) , para MPEG-4 sera MP4(no tengo idea de porque solo permite usar este contendor) y en el caso de Snow sera AVI. Abajo a la izquerda de esta ventana se selecciona el CODEC deseado mediante el menu desplegable. En la casilla del centro como podran ver se especifica el bitrate medio; es posible utilizar una sola pasada CBR, desmarcando la casilla "Use VBR", o dejarla marcada y realizar una pasada VBR, aunque lo mas recomendable es realizar una codificacion a 2 pasadas VBR, para lo cual habra que marcar tambien "2 pass encoding". Tambien pueden especificar dentro de esta casilla un numero entero en el rango 1-31 para codificar a una pasada con quant constante(deben desmarcar 2 pass).
La casilla "High Quality", si esta marcada, reducira la velocidad de codificacion un poco pero mejorara la calidad final de forma notable. "Use Trellis Quant" hace referencia a utilizar un metodo especial para el analisis de los frames, reduciendo tambien la velocidad y logrando ligeramente mejor calidad.
Pasemos a las opciones avanzadas con "Advanced Options...". Marcar la casilla "Extreme & Slow Settings" activa un modo de maxima calidad, que a su ves tambien disminuye drasticamente la velocidad; esta casilla marcada activa automaticamente el uso de Trellis Quant, este o no marcada la propia. En este mismo apartado es posible setear el "GOP Size", o maxima distancia entre key-frames, el cual debe ser como maximo 18 en NTSC y 15 en PAL cuando se trabaja con MPEG-2, sin embargo el valor recomendado para codificacion a MPEG-2 DVD es 12, tengan en cuenta que cuanto menor sea dicho valor menor sera la compresibilidad, pero a su ves puede que se logre mejor calidad; tambien esta el maximo numero de B-frames consecutivos en "Max B-Frames", donde un valor de 2 es suficiente, mayores valores aumentarian la compresion, por ejemplo 3, pero no son para nada recomendables, y ya pasarse de 3 de seguro afectaria de forma muy negativa la calidad. A la derecha estan las opciones para procesar contenido entrelazado, marcando la casilla "Interlaced Encoding" se habilitan las otras dos, "Top Field First" para que sea procesado primero el campo superior en ves del inferior y "PullDown" para realizar durante la codificacion la conversion a 29.97FPS. Esta conversion(necesaria para cumplir con el estandar NTSC formato DVD) no hace falta realizarla con el QuEnc(de hecho con contenido progresivo directamente no es posible), ya que mas adelante en este manual se explicara como agregar los flags en el archivo M2V para que dicho pulldown sea realizado por el reproductor, siendo este el metodo mas eficiente y el unico recomendable. En DC Precision el valor normal es 8, pero pueden subirlo si utilizan altos bitrates.
El siguiente apartado posee dos casillas, "Force Close GOP" y "Scene Detection", donde marcar la primera desactiva la segunda. La primera cierra todos los GOP y es utilizada para mayor compatibilidad si estamos creando un DVD, aunque solo deberia ser realmente necesario cuando se esta creando un DVD multiangulo, mientras que si no la usan y marcan la segunda habilitan la deteccion de cambio de escena, util para llegar mejorar ligeramente la calidad dado que detecta el cambio mencionado y fuerza la insercion de un key-frame, como tambien es practico si desean luego insertar capitulos en cambios de escena; conclusion, recomendado activar deteccion de escenas. Nota: algunos programas de autorias pueden llegar a quejarse de GOPs abiertos, pero en general deberian poder ignorar esta advertencia (ej: DVDLAB).
A la derecha pueden elegir el bitrate maximo en el caso de VBR, o marcar la casilla para que sea calculado automaticamente, siendo este valor automatico 3 veces el bitrate medio seteado. Este valor es por supuesto ignorado si se codifica a quant constante.
Luego tenemos para elegir la relacion de aspecto, donde recuerden que siendo un DVD lo que estemos creando podra ser unicamente 4:3 o 16:9, y que el resize y las bandas negras son tarea para avisynth, esta eleccion solo sirve para dejar indicado en el archivo de video la relacion para ser leida por el reproductor, y no por eso debe ser tomado a la ligera, si ponen la incorrecta no se vera bien. Si en ves de eso estan creando otro tipo de archivo sin bandas negras y con una resolucion que representa fielmente la relacion de aspecto (como MPEG-4) deberan elegir 1:1. Y el de 2:21 no tengo idea para que sirve, ya que la otra que conosco es en realidad de 2:35, agradecere mucho si alguien tiene una aclaracion sobre esto.
El siguiente apartado permite seleccionar la prioridad de ejecucion del programa, es mejor dejarla en normal y que el SO administre automaticamente la misma segun el resto de programas en ejecucion, subirla mas alla puede traer problemas, mas aun si poseen otros programas funcionando en segundo plano, como antivirus y esas cosas.
Continuando hacia abajo a la izquierda tienen un sector para cambiar el color y apariencia de la GUI, como para romper con la monotonia del color gris que viene por defecto.
Siguiendo hacia la derecha nos encontramos con la posibilidad de cargar y utilizar matrices externas, que pueden servir para mejorar los resultados cuando se codifica con bajos bitrates(ej: la matriz "Notch", del proyecto KVCD); estas deben estar en el formato que reconoce el codec XviD, TXT o XCM, para poder ser cargadas; otra alternativa es marcar la casilla QLB, que habilita el uso de una matriz especial para codificacion con bajos bitrates. En el caso de estar creando un DVD hay que considerar que algunos reproductores pueden no llevarse bien con otras matrices fuera de la estandar.
Y por ultimo el apartado de abajo permite, desde el menu Mux, elegir la forma en que se multiplexan video y audio, util para cumplir los estandares al pie de la letra, o directamente no hacerlo obteniendo ambos stream por separado, lo ideal es que utilicen esta opcion cuando piesen en DVD NTSC(para asi tener a la salida un M2V y un AC3 o MP2 y poder ahorrarse el demux que habria que realizar luego para poder hacer el pulldown), se logra usando la opcion "Separate Passes"; u obtener solo audio o solo video mediante No Video o No Audio respectivamente. Tambien desde aqui pueden elegir el bitrate (para DVD se recomienda que este entre 160 y 224) y codec de compresion del audio, el cual variara segun el codec de video que esten usando. En el caso de MPEG-2 sera AC3 o MP2, ambos compatibles con DVD; para MPEG-4, AAC o MP3; en MPEG-1 solo MP2; y en Snow solo MP3.
El boton que dice Author DVD accede a una pequeña herramienta para realizar una autoria de DVD, cuyo caracter experimental y en desarrollo la deja por ahora relegada solo a quien le alcance una funcionalidad muy simple y limitada (nada de menues, subtitulos, capitulos, etc), razon por la cual es mejor recurrir a otros programas para ello.
Finalmente no queda mas que salir de las opciones avanzadas con Apply e iniciar la codificacion, lo que se lleva a cabo desde el boton Encode en la ventana principal. La misma demorara bastante dependiendo de la potencia de su PC, especialmente de CPU y memoria.
Y listo, llegado el caso en que el formato buscado es el DVD-Video entonces sigan leyendo para finalizar con el PullDown.
PullDown
Ahora bien, como ya se menciono, el QuEnc no permite "marcar" al archivo resultante para asi dejar indicado que debe realizarse un pulldown de 23.97 a 29.97 en la reproduccion (y asi cumplir el estandar NTSC para DVD), entonces para dicha tarea usaremos un pequeño programa tambien gratuito llamado DGPullDown. Este programa carga un archivo MPEG-2 unicamente de video (extension M2V) y lo procesa dejando otro archivo M2V con los indicadores necesarios para que pase a ser un NTSC a 29.97 FPS. Es un proceso bastante rapido e indoloro para el video. Su funcionamiento es muy simple, en "Source ES" (ES hace referencia a Elementary Stream, porque es solo video) cargan el archivo M2V usando el boton Browse. Lo mismo con "Dest ES" solo que para indicar donde guardar el resultado. Las casillas lo mejor es dejarlas como vienen marcadas por defecto, si quieren investigar un poco mas pueden leer la ayuda que viene incluida con el programa. Solo comentare que "Modify File in Place" sirve para en ves de crear un nuevo archivo M2V, modificar el existente, yo recomendaria no utilizarla a no ser que tenga poco espacio en disco, ya que una falla en el proceso puede dejar inservible al video. Como el tipo de conversion debemos marcar 23.976 --> 29.97 , aunque si nuestro video es PAL a 25 FPS tambien pueden aplicarle el pulldown con 25 -->29.97 para pasarlo asi a NTSC, aunque esto no es necesario si su reproductor soporta PAL y tengan en cuenta que si van a hacerlo la resolucion del video debera ser NTSC compatible (720x480).
Y listo, ya tienen un M2V @ 29.97FPS + su archivo de audio AC3 o MP2 listos para realizar una autoria DVD o ser multiplexados a MPG.
FIN
Esta obra está licenciada bajo una
Licencia Creative Commons Atribución-No Comercial-Sin Obras Derivadas 2.5 Argentina.
Atribucion: se debe dejar indicado el autor del manual (o sea yo) y el enlace a su ubicacion original (o sea aqui) bajo el titulo de copyright. Gracias.








