Anime

Organizacion del Script AviSynth y Explicacion de el

  • by
Avisynth es un frame server (permite abrir videos en editores y reproductores que no soporten determinado formato, por ej: se pueden editar videos .mp4 con VirtualDub) y ademas posee su propio lenguaje. Pero Avisynth es mucho mas que esto, es una poderosisima herramienta de filtrado y hasta restauración de videos, que permite a través de sus filtros resultados que ni nosotros creeríamos. Como tiene su propio lenguaje hay que saber armar los scripts, estos mismos se escriben en un bloc de notas y se guardan con una extensión .AVS. Filtros y sintaxis que voy a explicar: 1) Avisource 2) Directshowsource 3) LoadPlugin 4) AVCSource 5) Resize 6) AddBorders 7) TemporalSoften Para cargar los videos hay distintos códigos según el formato pero siempre dentro de un parentesis se debe escribir entre "" comillas para que lo acepte, no olvidarse de eso. 1) Para cargar los videos .AVI se utiliza: Avisource("ubicacion del video" ) En mi caso... Avisource("E:\Descargas USD\Death Note Rewrite 2.avi" ) 2) Para cargar videos en .MKV y algunos mas usar... Directshowsource("Ubicacion del video" ) 3) Para cargar videos en .MP4 y .MKV usar... Al principio del script escribir la siguiente linea... LoadPlugin("ubicacion de DGAVCDecode.dll" ) El codigo LoadPlugin sirve para cargar cualquier filtro o plugin que no este incluido en Avisynth En mi caso seria... LoadPlugin ("C:\Plugins externos avisynth\DGAVCDec 1.09\DGAVCDecode.dll" ) 4) Luego debajo de ese codigo escribir el siguiente... AVCSource("Ubicacion del proyecto .DGA" ) De esa forma se cargan los proyectos .DGA, entonces para mayor claridad les pongo como deberia ir en un script por si les quedo alguna duda: LoadPlugin ("C:\Plugins externos avisynth\DGAVCDec 1.09\DGAVCDecode.dll" ) AVCSource("Ubicacion del proyecto .DGA" ) 5) Para cambiar la resolucion se usa un filtro llamado Resize, y este tiene varias variantes. Yo siempre uso el BlackmanResize (recomendado para buena calidad y altos bitrates) pero tambien se encuentran LanczosResize, Lanczos4Resize, BilinearResize, BicubicResize, etc. Solo es cuestion de gustos La sintaxis del BlackmanResize es la siguiente por ej: BlackmanResize(720,576,4) El valor 4 significa que cuanto mayor sea el numero, conserva mayor cantidad de detalle pero si te pasas en numero van a empezar a aperecer pixeles, asi que ese valor es el que viene por defecto y es el mejor. Si lo quisieran el video en NTSC, cambien el valor 576 por 480, el resto es igual 6) Filtro AddBorders sirve para poner bandas de color a los costados o arriba o abajo. Por mas que parezca un filtro que no se va a usar casi nunca, se va a usar casi siempre ya que gracias a este vamos a poder mantener la relacion aspecto logrando que no se deforme la imagen. Casi siempre solo vamos a agregar barras arriba y abajo por lo tanto en los costados ponemos el valor 0 para no agregar nada. Ademas hay que especificar el color, por supuesto vamos a elegir el negro que seria $000000 Su sintaxis es la siguiente: AddBorders(Izquierda,Arriba,Derecha,Abajo,Color) Un ejemplo practico cualquiera seria... AddBorders(0,28,0,28,$000000) Siempre este filtro hay que aplicarlo después de cambiar la resolución con alguno de los resize, como el BlackmanResize por ejemplo 7) Y otro filtro que vamos a utilizar va a ser el TemporalSoften, este filtro sirve para evitar la pixelacion en compresiones altas donde se baja bastante el bitrate. Un filtro mas que interesante... Su sintaxis la voy a dar con un ejemplo directamente asi no los confundo y me extiendo tanto. Asi lo configure yo, solo copien y peguen, ya que funciona para la mayoría de los caso. Temporalsoften(4,5,5,mode=2,scenechange=10) Explico pocos filtros pero son suficientes para que quede excelente el video, hay muchísimos mas pero no terminaria nunca y quiza ni los sepa manejar (lo mas probable)

Manual Completo de Filtros y sus usos con AviSynth

  • by
FILTROS de VIDEO Definiciones Parametros: la accion de un filtro (ya sea interno, externo o una funcion) se configura a partir de una serie de parametros, propios de cada filtro en particular. Estos parametros vienen con valores por defecto (salvo raras exepciones), siendo estos los valores recomendados como punto de partida. Cuando arman el script e invocan un filtro, no es necesario que definan el valor de todos los parametros que tiene el filtro, solo de aquellos que desean modificar el valor por defecto. Por ejemplo: el filtro BicubicResize posee 2 parametros adicionales a las resoluciones vertical y horizontal (llamados b y c en la descripcion del filtro mas abajo), si ustedes solo colocan BicubicResize(x,y) dichos parametros se usaran con los valores por defecto, pero si lo desean pueden escribir: BicubicResize(x,y,c=0.75), definiendo asi uno de ellos con el valor personalizado y dejando al otro con el valor por defecto, y asi sucesivamente pueden usar todas las combinaciones que quieran. Es importante destacar que en muchos de los filtros los valores por defecto deben considerarse solo como una referencia, y no como los valores optimos de aplicacion. Si es cierto que en la mayoria de los casos los valores por defecto son fijados para un efecto aceptable en una amplia gama de videos, sin embargo si se desea lograr una aplicacion optima casi siempre se tendran que regular los parametros segun el video. Filtros Internos: Son aquellos incluidos con AviSynth y pueden usarse directamente. Filtros Externos o Plugins: Filtros no incluidos con AviSynth, tambien llamados plugins. Se componen de un unico archivo .dll aunque en algunos casos pueden requerir que otras librerias esten presentes en el sistema. Para poder invocar un plugin en el script (mediante su sintaxis correspondiente) primero debe cargarse el mismo utilizando la siguiente linea en el comienzo del script: LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la carpeta por defecto: C:\Program Files\AviSynth 2.5\plugins. Por supuesto que en un mismo script pueden utilizar tantos plugins como gusten, nada mas deben usar una linea por cada uno para cargarlos, o ponerlos todos en la carpeta mencionada. Funciones: Para crear los scripts, Avisynth ofrece un lenguaje mucho mas complejo de lo que se ve aqui, donde solo nos limitamos a nombrar los filtros y el modo de aplicarlos y configurarlos. Es posible "programar" lo que queremos que se haga con determinados filtros, de una forma muy compleja, con el objetivo de lograr mejores resultados de los que se consiguen con la aplicacion de los filtros "a lo bruto". Estos scripts suelen contener la programacion, en el lenguaje que entiende AviSynth, de lo que se acostumbra a llamar "funcion", es decir que cada script de este tipo define una funcion. La forma de trabajar con estas funciones es muy similar a como se trabaja con los plugins, es decir que hay que asegurarse de cargarla al script y luego se la puede invocar mediante su sintaxis como si de otro filtro se tratara. Es importante tener en cuenta que el script solo contiene una programacion, pero no puede filtrar por si mismo, depende para funcionar de los filtros internos o externos que se mencionan en las respectivas secciones del manual. Existen variedad de estos scripts, dedicados por ejemplo a aumento de nitidez (efecto sharpen), filtrado de ruido, filtrado de bloques, etc. Como la funcion suele requerir de filtros externos deben asegurarse de cargarlos como corresponde o tenerlos en la carpeta por defecto. Respecto a la carga de la funcion misma, se realiza mediante la linea: Import("C:\...\funcion.avs"). Para la carga automatica de las funciones pueden colocarlas en la carpeta por defecto junto al resto de los plugins, con la unica salvedad de ponerles extension .avsi para que puedan ser reconocidas por AviSynth. A continuacion se presentan los filtros ordenados por categorias, y dentro de algunas de estas tambien por subcategorias. A su vez, dentro de cada subcategoria los filtros estan ordenados alfabeticamente. El formato de explicacion de cada filtro es el mismo: se da una breve (o no tanto) explicacion de su utilidad y a veces funcionamiento (muy basico), se muestra su sintaxis (en la mayoria de los casos junto con el valor por defecto de los parametros) y se pasa a explicar la funcion de cada parametro. A continuacion puede que haya algun que otro ejemplo y finalmente enlaces a la descarga, documentacion y otra informacion relacionada. Aquello que se encuentra resaltado en amarillo corresponde a lenguaje de AviSynth, por ello lo veran en la sintaxis y en los ejemplos; y lo que vean resaltado en verde son los parametros. Debajo del nombre de cada filtro tienen indicado el tipo, es decir si es interno, plugin o funcion, y los formatos de color sobre los que soporta trabajar. Si su video no se encuentra en uno de estos, pueden recurrir al filtro ConvertToXXX que encuentran dentro de la categoria Color y Niveles. En cada categoria hay una lista que refleja todos los filtros tratados hasta la fecha. Carga y Manipulacion de Archivos Lo que necesitan para que AviSynth pueda cargar sus videos, asi como tambien los filtros que permiten su manipulacion. Filtros en esta categoria: AVISource / AVIFileSource / OpenDMLSource DirectShowSource WAVSource ImageSource DGMPGDec / DGMPGDecNV DGAVCDec / DGAVCDecNV DGVC1DecNV NicAudio BassAudio Trim UnalignedSplice / AlignedSplice ImageWriter Carga y Manipulacion de Archivos Transformaciones Geometricas Todo lo que sirva para modificar tamaño, cortar, etc la imagen. Filtros en esta categoria: AddBorders Crop FlipHorizontal / FlipVertical Letterbox Resize Turn Transformaciones Geometricas Filtrado de rudio (denoisers) Filtros destinados al ruido aleatorio. Subcategorias y filtros: Espaciales: FRFun3b - FRFun7 - SpatialSoften - UnDot - VagueDenoiser.Temporales: TemporalSoften.Espacio-Temporales o 3D: DeGrainMedian - DFTTest - FFT3DFilter - FFT3DGPU - FluxSmooth.Temporales con compensacion de movimiento: MVTools+MDegrain - TTempSmooth. Denoisers Restauracion Por aqui estan los filtros que se dedican a eliminar o atenuar efectos indeseables del video, tambien llamados artifacts. Estos filtros todos tienen un uso especifico, no son filtros para aplicar sobre ruido en general, sino especificamente sobre el efecto al que apuntan. Subcategorias y filtros: Debanding: GradFun2db - GradFun2DBmod.Deblocking: BlindPP - DeBlock - DeBlock_QED - SmoothD - UnBlock.Dehaloing y Deringing: DeHalo_alpha - EdgeCleaner - HQDering - YAHR.Correccion de Color: Colormatrix.Filtros para Eliminar Logos: rm_logo. Restauracion Aumento de nitidez (efecto sharpen) La finalidad de estos filtros se explica por si sola. Filtros en esta categoria: aSharp aWarpSharp / aWarpSharp2 MSharpen LimitedSharpenFaster LimitedSharpenFastermod SeeSaw Sharpen Filtros Sharpen Multiproposito Funciones dedicadas a mas de un tipo de filtrado, es decir que abarcan mas de una categoria. MCTemporalDenoise Ajustes Ajustes de color, niveles y framerate. Subcategorias y filtros: Conversion: ConvertToXXX.Color y Niveles: ColorYUV - GreyScale - Tweak.Framerate: AssumeFPS - ChangeFPS - Decimate - FDecimate - PullDown.Oscurecimiento de lineas: FastLineDarkenMOD - Toon. Ajustes Varios Subcategorias y filtros: Efectos: AddGrainC - GrainFactory3 - Reverse.Subtitulado: Subtitle - VSFilter. Varios Carga de Archivos Como AviSynth ejecuta el script en orden lo primero que debe ir en el script son las lineas que permiten la carga de video y/o audio, que se muestran a continuacion. AviSource("C:\...\video.avi", pixel_type=YV12) AviFileSource("C:\...\video.avi", pixel_type=YV12) OpenDMLSource("C:\...\video.avi", pixel_type=YV12) AviSource permite cargar archivos AVI, WAV, AVS o VDR(frameserver de VirtualDub). Esta detecta automaticamente el tipo de archivo y lo pasa a la interfaz AVIFile o OpenDML segun corresponda. En caso de encontrase problemas se puede forzar el uso de alguna de estas utilizando las otras dos lineas de carga, teniendo en cuenta que AviFileSource sirve para archivos AVI<2GB y el resto de formatos mencionados, mientras que OpenDMLSource puede abrir archivos AVI de cualquier tamaño pero no los otros formatos. Entre las comillas se indica la ruta completa al archivo, anque esta se puede obviar (solo se pone el nombre) si el archivo AVS(el script) esta en la misma carpeta que dicho archivo. Este modo de cargar el archivo requiere de un codec VFW para decodificar el video y de un codec ACM para decodificar el audio, asi que deberan tener codecs con dicha capacidad instalados. Pueden evitar la carga del audio colocando audio=false en la linea, quedando asi: AviSource("C:\...\video.avi", audio=false). El parametro pixel_type sirve para forzar un formato de color en la salida del decodificador, siendo validos los siguientes: YV12, YV411, YV16, YV24, YUY2, Y8, RGB32 y RGB24. Si se omite (que es lo mas comun) AviSynth usara el primer formato soportado por el decodificador respetando el orden ya mostrado. DirectShowSource("C:\...\video.mp4", fps=25) Para poder cargar otros formatos, o tambien util si no tienen un codec VFW para el video o uno ACM para el audio pero si pueden reproducir el archivo sin problemas, se utiliza esta linea que hace uso de la interfaz DirectShow y asi permite demultiplexar/decodificar todo formato que posea un Decoder o Splitter directshow instalado en el sistema. Es decir, que deberan tener instalados los decodificadores y demultiplexores como si los necesitaran para reproducir el video. Definir el parametro fps sirve para fijar el frame rate de reproduccion, pero solo es necesario en ciertos casos de decoders directshow que fallan en informarlo, como cuando se trata de achivos ASF o MOV. Si desean solo cargar el video, pueden agregar audio=false a la linea, quedando video.mp4", audio=false), y viceversa con video=false. Para videos con framerate variable o VFR se puede agregar convertfps=true, que sirve para convertir a framerate constante o CFR mediante duplicado de frames. Aparentemente ofrece mejores resultados si tambien se fija el framerate usando fps=120 o fps=119.88. WAVSource("C:\...\audio.wav") WAVSource("C:\...\video.avi") Para cargar un archivo externo de audio descomprimido en formato WAV, o tambien cargar solo el audio de un archivo AVI(decodificandolo mediante la interfaz ACM). ImageSource("C:\...\%d.bmp", start=0, end=1000, fps=24, pixel_type=RGB24) Para carga de imagenes, ya sea sueltas o una secuencia de las mismas para formar un video. En este ultimo caso los archivos deberan estar nombrados en orden adecuadamente. start y end sirven para fijar un intervalo de carga. Los valores mostrados en la sintaxis son los que vienen por defecto. pixel_type puede ser Y8, RGB24(por defecto) o RGB32. El canal alfa(transparencias) solo es cargado si se usa RGB32 y si es soportado para el formato de imagen cargado. Ejemplos: ImageSource("C:\...\%d.jpg", 51, 256) Carga todas las imagenes desde la 51.jpeg hasta la 256.jpeg formando un video que corre a 24 fps. ImageSource("C:\...\%2d.png", end=69, fps=30) Carga todas las imagenes desde la 00.png hasta la 69.png, formando un video que se reproduce a 30 fps. ImageSource("C:\...\imagen.bmp", end=100) Repite la imagen.bmp 100 veces, formando un video a 24 fps. Plugins para carga de archivos Existen plugins que pueden ser utilizados por AviSynth para cargar ciertos formatos de video y/o audio. Estos plugins se ocupan de la demultiplexacion y decodificacion (y opcional, de ajustes de Luminancia y crop), actuando asi como frameservers para AviSynth o cualquier otro programa que soporte cargar los archivos de proyecto que crean los indexadores. De esta forma se puede evitar usar los decodificadores del sistema y asi se gana en estabilidad. La carga de los mismos se puede realizar manualmente mediante la linea LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la carpeta por defecto: C:\Program Files\AviSynth 2.5\plugins. El funcionamiento en el caso de los plugin para carga de video es comun a todos ellos, dado que son desarrollados todos por el mismo autor. Este es basicamente asi: se incluyen en la descarga dos software diferentes, un programa llamado DG[...]Index.exe y el plugin propiamente dicho de nombre DG[...]Decode.dll Primero se debe usar el programa Index para abrir el video. Aqui es cuando deben extraer el audio, dado que estos plugin solo procesan video, asi que el audio hay que tratarlo aparte. Tambien es posible aplicar algo de filtrado sencillo (Luminancia y crop) mientras se observan los resultados en tiempo real, a manera de preview del video que obtendra AviSynth del plugin. Con este programa se crea un archivo de proyecto que contiene informacion sobre el video a decodificar, incluidos los ajustes de luminancia y crop que hayan hecho. Es este archivo de proyecto el que luego se carga desde el script de AviSynth y es a partir del mismo que el decodificador (DG[...]Decode.dll) carga el video, decodifica y envia el video descomprimido a AviSynth para la aplicacion del script. DGMPGDec Este conjunto de utilidades permite cargar archivos con video en el formato MPEG-1 o MPEG-2, contenidos en alguna de las siguientes extensiones soportadas: VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO. Se usa asi: cargan el video al DGIndex.exe con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las opciones de reproduccion en el menu File. Para extraer el audio, pueden usar las opciones en Audio->Output Method, siendo estas: Disable (no se extrae nada); Demux Tracks (eligen que pistas extraer); Demux All Tracks (extrae todas las pistas); Decode AC3 Track to WAV (extrae y decodifica hacia WAV). La extraccion ocurre durante el proceso de creacion del archivo de proyecto .d2v Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter. Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real. Para crear el proyecto .d2v van a File->Save Project y guardan el mismo, el proceso demorara un cierto tiempo, pueden ver el progreso en la linea de tiempo. Tambien, de paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de video, mediante File->Save Project and Demux Video, o solo extraer las pistas de audio con Demux Audio-Only Stream. Sintaxis para carga del video: MPEG2Source("C:\...\video.d2v") DGMPGDec DGAVCDec Para cargar archivos de video en el formato H264 o MPEG-4 AVC, el que puede encontrarse en alguno de los siguientes formatos de archivo (extensiones): H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP. Se procede de la siguiente manera: ejecutan DGAVCIndex.exe y cargan el archivo de video (File->Open). Una vez abierto pueden usar el cursor para navegar por el mismo, o aprovechar las opciones de reproduccion (File->Play, Stop, Pause). Pueden extraer (demultiplexar) el audio mediante Audio->Audio Demux, se abre una lista con las pistas detectadas, las marcan para extraer con Set y las mismas seran demultiplexadas al guardar el proyecto. Pueden desmarcar usando Clear. Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter. Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real. Finalmente, para crear el archivo de proyecto .dga, utilizan File->Save Project para iniciar el proceso, cuyo avance puede ser monitoreado mirando el cursor. Al guardar el proyecto tambien es posible extraer el video a un archivo RAW (solo video) a partir de File->Save Project and Demux Video. Sintaxis para carga del video: AVCSource("C:\...\video.dga") DGDecNV Este plugin (DGDecodeNV.dll) tiene la particularidad de poseer soporte para la tecnologia CUDA de Nvidia. Gracias a esta es capaz de entregar el procesamiento a la placa de video (GPU), aprovechando el impresionante poder de calculo que estas poseen y liberando asi al CPU del proceso de decodificacion. Actualmente este plugin es de pago, aunque este es irrisorio (para donde se gane en dolares por lo menos ;-)) y solo necesario una vez. No todas las placas de video Nvidia soportan CUDA, solo aquellas con PureVideo version VP2 o superior. Pueden consultar en esta lista. Teniendo la placa, solo les faltan los drivers oficiales de Nvidia desde la version 191.07 en adelante. Como ultimo paso antes de poder ejecutar el script, deben iniciar el servicio CUVID ejecutando el archivo CUVIDServer.exe, incluido con la descarga del plugin. Los formatos de video soportados, junto con sus posibles contenedores y/o extensiones, son: MPEG-2 y MPEG-1 -> VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO.H264 -> MKV, H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP.VC-1 -> MKV, VC1, M2TS, Transport Streams. Noten que en el caso de VC-1 no es soportada la extension WMV, en cuyo caso pueden recurrir a la herramienta GDSMux incluida con el Haali Media Splitter para pasar de .wmv a .mkv Se usa asi: ejecutan DGIndexNV.exe y cargan el video con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las opciones de reproduccion File->Play/Preview/Stop/Pause-Resume. La extraccion del audio se realiza desde Audio->Audio Demux. En el caso de un archivo TS (Transport Stream) se listan las pistas detectadas y deben seleccionar cuales desean extraer: click sobre la pista->Set para agregar, Clear para quitar. La extraccion ocurre durante el proceso de creacion del archivo de proyecto. Cuando se trata de un archivo PS(Program Stream) o MKV las pistas se eligen de la misma forma pero se extraen desde ahi mismo usando Demux. Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter. Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real. Para crear el archivo de proyecto (.dgv si es VC-1, .dgm si es MPG o .dga si es H264), es decir iniciar el proceso de indexado, van a File->Save Project y guardan el mismo. El proceso demora unos minutos, pueden ver el progreso en la linea de tiempo. Tambien, de paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de video, mediante File->Save Project and Demux Video. Sintaxis para carga del video: DGSource("C:\...\video.dgm") Algunos de los parametros disponibles: deinterlace, para desentrelazado usando el decodificador PureVideo de Nvidia. Puede tomar los valores: "0", por defecto, no se aplica desentrelazado; "1", desentrelazado normal; "2", desentrelazado al doble del framerate original (o tambien llamado bobbing). resize_w y resize_h permiten aplicar reescalado usando la GPU, y por supuesto representan la resolucion horizontal y vertical respectivamente. DGDecNV NicAudio Para carga de varios formatos audio. Sintaxis: AC3(Dolby Digital) NicAC3Source("C:\...\audio.ac3",Channels,DRC) DTS, DTSWAV NicDTSSource("C:\...\audio.dts",Channels,DRC) Channels: opcional, valor entero, maximo numero de canales a la salida, por ejemplo si cargan un .ac3 de 6 canales pueden hacer Downmix a estereo si le ponen al parametro un valor de 2. DRC(0,1): aplica el algoritmo de Dynamic Range Compresion, por defecto en 0. 1 aplica el perfil Normal del algoritmo. MP1, MP2, MP3 NicMPG123Source("C:\...\audio.mp3",Normalize) Normalize(0,1): si normalizar o no el volumen, por defecto en 0 (apagado). LPCM NicLPCMSource("C:\...\audio.lpcm",SampleRate,SampleBits,Channels) WAV, WAVEFORMATEXTENSIBLE, W64, BWF, RF64, AU, AIFF y CAF RaWavSource("C:\...\audio.wav",SampleRate,SampleBits,Channels) SampleRate: valor entero a expresarse en Hz, representa la frecuencia de muestreo. SampleBits: representa el tamaño de la muestra digital del audio. Valores validos: 8, 16, 24, 32. Y 33 solo para RAW (equivale a 32 float). LPCM tambien acepta 20, -8, -16, -24 y -32, siendo los valores negativos para audio LPCM de Blu-Ray (Big-Endian). BassAudio Para carga de audio. Amplio soporte de formatos. El plugin no es mas que una interfaz para AviSynth de las librerias decodificadoras provistas por: http://www.un4seen.com/, desde donde pueden descargarlas. Hay varias librerias, cada una dedicada a un determinado grupo de formatos. Segun que formato deseen cargar necesitaran que la libreria que corresponda este acompañando al plugin (BassAudio.dll), pero en el script solo es necesario cargar este ultimo. La libreria principal es el archivo bass.dll y soporta los formatos: MP1, MP2, MP3, OGG, WAV, AIFF, entre otros. Otros formatos se soportan mediante Addons, es decir que ademas del archivo .dll que posee dicho soporte extra de formatos, tambien debe estar presente bass.dll, todo junto al plugin. Pueden ver que hay disponible y para que formatos desde aqui, asi como descargar lo que necesiten. Sintaxis: Para cargar el plugin LoadPlugin("C:\...\BassAudio.dll") Para cargar un archivo de audio BassAudioSource("C:\...\audio.mp3") El plugin lo consiguen como parte del BeHappy, ojo que puede ser que algunas versiones sean solo el ejecutable, busquen el programa completo, descomprimen y lo encuentran en la carpeta plugins. Filtros para Manipular Archivos AlignedSplice / UnalignedSplice [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Para unir dos o mas videos, uno a continuacion del otro. La diferencia entre ambas alternativas es que AlignedSplice une los videos teniendo en cuenta la sincronizacion del audio, es decir que corta y/o agrega silencio en la pista de audio del primer video segun sea necesario para evitar desincronzaciones. UnalignedSplice debe usarse cuando originalmente las pistas de audio eran una sola continua. AlignedSplice(clip1, clip2, clip3, ...) UnalignedSplice(clip1, clip2, clip3, ...) Tambien puede reemplazarse esta sintaxis por los simbolos + para representar UnalignedSplice y ++ para AlignedSplice, por ejemplo asi: AviSource("C\...\video1.avi") + AviSource("C\...\video2.avi") Trim [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sirve para seleccionar un determinado trozo de un video. Se deben indicar el frame de inicio y frame final del trozo, siendo ambos tambien incluidos en la seleccion. A partir de este filtro solo el trozo seleccionado continuara siendo procesado. Tambien puede usarse para seleccionar diferentes partes del video no consecutivas, "sumando" la aplicacion del filtro a cada una de ellas. Sintaxis: Trim(a,b,pad_audio) Trim(a,b)+Trim(c,d) Donde a y/o c son los frames iniciales y b y/o d los finales de cada trozo. El segundo metodo puede usarse para cortar un sector intermedio del video, basta que a sea el frame 0(cero) y d el ultimo frame, entonces se elimina el rango de frames desde b+1 hasta c-1. pad_audio(true,false) por defecto activo, de ser desactivado (pad_audio=false) impide que el audio sea ajustado para coincidir con la duracion del video. Ejemplos extraidos de la wiki: Trim(100,0) -> borra los primeros 100 frames, audio ajustado o cortado para coincidir con la duracion del video. Trim(100,0,false) -> elimina los primeros 100 frames de audio y video. Las duraciones de audio y video resultantes permanecen independientes. Trim(100,-100) -> lo mismo que trim(100,199) Trim(100,199,false) -> el audio sera cortado si es mas largo pero no ajustado de ser mas corto que el frame 199. Trim(0,-1) -> devuelve solo el primer frame. Trim(0,100)+Trim(200,300) -> conserva los frames 0 a 100 y 200 a 300, eliminando los frames desde 101 a 199. ImageWriter [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Permite exportar el video en forma de secuencia de imagenes, o lo que es lo mismo permite extraer los frames hacia archivos de imagenes sueltos. Sintaxis y valores por defecto: ImageWriter("C:\...\nombre_archivo", start=0, end=0, type=ebmp, info=false) Entre comillas va la ubicacion y nombre de archivo que tendran las imagenes. AviSynth las nombra de la siguiente manera: nombre_archivo000000.type, nombre_archivo000001.type, nombre_archivo000002.type, etc. Mediante start y end pueden elegir que porcion del video desean exportar, marcando el frame de inicio y final. Por defecto ambos valores en 0 indica que se exporta todo el video. El formato de las imagenes se selecciona con type, pudiendo ser:  bmp, dds, ebmp, jpg/jpe/jpeg, pal, pcx, png, pbm/pgm/ppm, raw, sgi/bw/rgb/rgba, tga, tif/tiff. Por defecto se guardan en el formato nativo de AviSynth ebmp, que viene a ser un bmp con la posibilidad de exportar en cualquier formato de color (YUY, RGB, etc). Si se usan los formatos Y8 o RGB el archivo ebmp es un bmp estandar, pero de usarse el resto la compatibilidad probablemente quede restringida a AviSynth y el filtro ImageSource. Para los demas formatos de imagen el color debe ser Y8 o RGB24/RGB32. Con info=true se graba sobre el video si el frame fue exportado y de serlo el nombre de archivo de la imagen que le corresponde. 888: Filtros para Transformaciones Geometricas AddBorders [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: AddBorders(left,top,right,bottom,color) En ciertos casos no es posible modificar el tamaño(espacial) de un vídeo con solo redimensionar dado que las resoluciones que se deben obtener son fijas para cumplir algún estándar, entonces con solo dimensionar se dañaria el aspect ratio(AR) del mismo y este se veria alargado o achatado; asi que para llegar a la resolucion definitiva hace falta completar los pixeles faltantes con bandas de un color solido, para ello se usa el filtro AddBorders; este filtro agrega una banda de pixeles de algun color de altura configurable por separado en cada margen. Observen la sintaxis, los parametros left(izquierda), top(arriba), right(derecha) y bottom(abajo) representan la cantidad de pixeles(valores enteros) que ocuparan las bandas contando desde cada uno de los cuatro margenes. Lo mas comun es agregar bandas arriba y abajo, pero tambien se agregan en los cuatro lados por ejemplo cuando se desea solucionar el efecto overscan. El parametro color permite elegir un color distinto del negro (color por defecto). Este color lo deben indicar en codigo hexadecimal. Aqui pueden ver una lista con los codigos y colores soportados, mientras que por aca pueden cotejar a que color corresponde cada codigo. Ejemplo: AddBorders(0,64,0,64,$00FFFF) Esta linea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nomas :-D. Crop [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: Crop(left,top,-right,-bottom,align) Este filtro sirve para cortar cierta cantidad de pixeles de los lados de la imagen. Se configura indicando la cantidad a cortar de cada lado, donde left es izquierda, top es arriba, right es derecha y bottom es abajo. Y deben colocar los ultimos dos valores negativos como se ve en la sintaxis. El parametro align(true,false) permite activar(true) o desactivar(false, por defecto) la alineacion de la informacion que representa al frame en memoria (RAM). Cuando se usa align=true el filtro, luego de cortar y almacenar la imagen en memoria de forma no alineada, procede a copiarla hacia otra posicion pero esta vez alineada. Cuando la perdida de velocidad debido a esta copia es menor a la perdida que tendria el filtro a continuacion si estuviera la imagen desalineada se logra una ganancia de velocidad, especialmente cuando luego siguen filtros de suavizado (Smoothers). Una variante del mismo filtro es la siguiente: CropBottom(count,align) Remueve count lineas de la parte inferior de la imagen, especialmente util para eliminar la distorsion inferior de un video capturardo de un VHS. FlipHorizontal / FlipVertical [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Rotan al video de tal manera que lo que se veia de izquierda-derecha pasa a verse de derecha-izquierda, en el caso del horizontal, el vertical hace lo mismo pero en vertical valga la redundancia. Dicho de otra forma el video pasa a verse como el original se veria en un espejo. Sintaxis: FlipHorizontal() FlipVertical() Letterbox [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Se ocupa de solapar sobre el video bandas negras o de color a eleccion, tapando la parte superior e inferior, y opcionalmente los lados, del video. Puede servir para cubrir bandas negras ya existentes que contengan ruido o para cubrir rudio, artifacts, etc de los bordes de un video. Sintaxis y valores por defecto: Letterbox(top, bottom, x1, x2, color=0) Con top y bottom se fijan los tamaños en pixeles de las bandas superior e inferior respectivamente. Con x1 y x2 se cubren los laterales izquierdo y derecho. Para cambiar el color usan codigo hexadecimal, por ejemplo color=$00FFFF es cyan. Pueden consultar otros colores aqui. Resize [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Este filtro se usa para modificar la resolucion del video, para asi estirarlo o comprimirlo(espacialmente hablando) lo necesario hasta alcanzar la nueva resolución deseada. Existen unas cuantas variantes que se pueden usar: Sintaxis: BilinearResize(ancho,altura) BicubicResize(ancho,altura,b,c) LanczosResize(ancho,altura,taps) Lanczos4Resize(ancho,altura) GaussResize(ancho,altura,p) BlackmanResize(ancho,altura,taps) PointResize(ancho,altura) SincResize(ancho,altura,taps) SplineXXResize(ancho,altura) , donde XX puede ser 16, 36 o 64 El ancho y altura deben indicarse con valores enteros, dado que la unidad mas chica posible es el pixel. Tambien tengan en cuenta que muchos codecs compresores requieren para su correcto funcionamiento que el video a comprimir tenga valores de resolucion, tanto horizontal como vertical, multiplos de 8 o 16, asi que antes de aplicar el resize averiguen cual es el caso que les compete para no encontrarse luego con errores inexplicables. Explicacion Detallada de cada variante: Bilinear: tiende a suavizar la imagen, esto significa que es el que menos detalle deja pasar al redimensionar; adecuado para cuando usen bitrates bajos al comprimir, y/o cuando se reduce la resolucion. Bicubic: es similar en funcionamiento al anterior, pero gracias a mejores algoritmos logra procesar un mayor nivel de detalle y por ende es mejor para cuando se aumenta la resolucion, lograndose una imagen mas nitida, pero solo es recomendable cuando habra suficiente bitrate como para comprimir dicho detalle extra, sino puede ser mas conveniente el Bilinear para evitar que la calidad se vea afectada negativamente al comprimir. Puede ser personalizado mediante los parametros b y c que pueden ver en la sintaxis de mas arriba. Estos son llamados blurring y ringing respectivamente; el blurring sirve para quitar nitidez, agregando un efecto "borroso", eliminando detalle. Puede servir para evitar la aparicion de macrobloques al comprimir a bajos bitrates; mientras que el ringing hace todo lo contrario, a mayores valores mas fino sera el filtro y mas detalle dejara pasar llegando tambien a producir el efecto de un filtro sharpen(aumento de nitidez), con la posibilidad de aparicion de ruido si el filtro se setea muy fuerte. Con b=0 y c=0.75 el filtro es identico al presente en VirtualDub, "VirtualDub`s Precise Bicubic". Un valor normal seria b=0 y c=0.5 para asi lograr una importante ganacia de detalle respecto del Bilinear, valores mayores a c=0.6 pueden producir ruido. Los valores por defecto son: b=1/3 y c=1/3. Lanczos: permite alcanzar muy alto nivel de detalle y con mejor calidad que el Bicubic, solo recomendable para altos bitrates. Sirve como alternativa al Bicubic con valores de 0.6<c<0.75, aunque logra una calidad superior a este (menos ruido). El valor de taps (1-100, por defecto en 3) permite elegir el numero de lobulos que utilizara el algoritmo (para saber que cornos es eso pueden leer algo aqui, en ingles y aunque entiendan el idioma no les garantizo que vayan a comprender algo, son cuestiones que tienen que ver con la matematica del filtro). A mayor valor, mayor sera el detalle, pero comienza a aparecer notable ruido acompañando al mismo (se acentua el "ringing", como se dice en la jerga). Lanczos4: es el equivalente a LanczosResize(xxx,yyy,taps=4). O sea es lo mismo que Lanczos con un valor de taps=4. BlackMan: esta es una modificación del Lanczos que permite lograr menos ruido con valores de taps altos, parametro que representa lo mismo que en Lanczos, aunque aqui su valor por defecto es 4. Este filtro deberia lograr mejores resultados que el Lanczos4 si es usado como viene por defecto. Gauss: filtro basado en el algoritmo de Gauss. El parametro p ajusta la nitidez, desde 0 (menor detalle, mas borroso) hasta 100 (mayor detalle, mas fino). Su velocidad es similar al Lanczos4. Point: es el filtro para resize mas simple que existe. Su uso no es para nada recomendable a no ser que se quiera disminuir la calidad del vídeo adrede. Sus resultados suelen contener mucho bloque. Sinc: incorporado a partir de la version 2.6, permite usar la funcion Sinc truncada. El parametro taps es lo mismo que en Lanczos. SplineXX: este filtro tiene como objetivo alcanzar un muy alto nivel de detalle, pero generando menos ruido que si se usara Lanczos. XX puede valor 16, 36 y 64, cuanto mayor este valor mayor sera el detalle. Otra forma de uso: Desde la versión 2.5.6 de avisynth existe la posibilidad de cortar la imagen desde el mismo filtro de resize, como con el filtro Crop. Si se utiliza, en el proceso primero se corta y luego se aplica el resize. Usar esta linea: Crop(10, 10, 200, 300).BilinearResize(100, 150) Seria casi lo mismo que usar la siguiente: BilinearResize(100, 150, 10, 10, 200, 300) Este metodo es conveniente usarlo cuando quieren cortar parte de la imagen previa a su reescalado. Usandolo se logra mayor calidad en el reescalado de los bordes. Pero para cortar bandas negras o artifacts es mejor usar el filtro Crop. Turn [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] TurnLeft() TurnRight() Turn180() Rotan el video 90 grados hacia la izquierda(left), derecha(right) o 180 grados. 888: Denoisers Espaciales Son aquellos que filtran un determinado pixel basandose en informacion obtenida del analisis de los pixeles adyacentes. Por ello un parametro que muchos de estos filtros tienen en comun (asi como tambien los 3D) es aquel que regula que tan lejos del pixel se extiende el analisis. Como se imaginaran aumentar dicho radio resulta en perdida de velocidad pero tambien aporta mejoras de calidad. FRFun3b [YV12] Denoiser basado en fractales, lo que no dice nada util salvo que su funcionamiento difiere de otros filtros, y basta probarlo para notar muy alto nivel de limpieza y a su vez una alta conservacion de detalle fuerte, por lo que constituye uno de los filtros mas potentes y precisos, a pesar de ser solo espacial. Tambien es bastante rapido. Aunque no todo son rosas, tiende a dejarse llevar y ataca al detalle debil o difuso, lo que puede llevar a un efecto de sobrefiltrado en ciertas areas de la imagen. A pesar de esto el resultado general suele ser muy bueno si el video es muy ruidoso. Sintaxis: frfun3b(T, Tuv, S) Los parametros son bien simples: T es la fuerza de filtrado sobre luminancia, mientras que Tuv lo es sobre la crominancia. S es un parametro que de subirlo cambia calidad por velocidad. Y nada mas... eso si, no tengo idea de cuales son los valores por defecto, salvo que si prueban aplicar frfun3b() directamente, seguro notaran que es demasiado fuerte. Quizas un mejor punto de partida sea: frfun3b(2.0,2.0,1) FRFun7 [YV12] Aparentemente es la continuacion del anterior, aunque en verdad producen resultados diferentes. Por ello es que decidi mencionarlos a ambos como filtros separados. Debido a la carencia total de documentacion y la falta de informacion en general no tengo idea de que diferencias de calidad o potencia puede haber, aunque en mis pruebas observe que parece menos potente que el anterior, particularmente al filtrar artifacts de crominancia en fondos. Tambien note que es menos preciso filtrando cerca del detalle, produciendo un resultado de menor calidad. Tambien parece ser notablemente mas rapido, de seguro en compensacion por la menor calidad. Sintaxis y valores por defecto: frfun7(Lambda=1.1, T=6.0, Tuv=2.0) Lambda viene a ser la fuerza de aplicacion en general. Mientras que T y Tuv representan la fuerza de aplicacion especificamente sobre bordes, para luminancia y crominancia respectivamente. De seguro requieran reducir el valor de T, ya que por defecto es algo fuerte y ataca detalle. Este es el parametro que mas impacto tiene sobre el filtrado. SpatialSoften [YUY2] Unico filtro de ruido espacial incluido con AviSynth. Sintaxis: SpatialSoften(radius,luma_threshold,chroma_threshold) El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel en estudio con una mayor cantidad de pixeles adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor conservacion de detalle. luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente. UnDot Dudaba sobre si valia la pena mencionarlo, pero es tan simple de usar que aqui va. Filtro extremadamente debil. Rara vez notaran a simple vista sus efectos, salvo quizas si observan su impacto en la compresibilidad, aunque tampoco esperen gran cosa. En particular esta pensado para eliminar ruido en forma de "puntos" aislados, de ahi su nombre, y con ellos tambien el denominado ruido mosquito que se presenta en bordes. Se nota su efecto especialmente al hacer upsize (reescalar hacia mayor resolucion), donde estos puntos se hacen mas notorios. Tambien es extremadamente rapido y el detalle que puede eliminar es despreciable, por lo que usarlo no cuesta casi nada y podria ayudar a un filtrado mas completo. Sintaxis: UnDot() Eso es todo, ni siquiera tiene parametros :-D. VagueDenoiser [YV12-YUY2-RGB24-RGB32] Parece mas efectivo contra bajos niveles de ruido, dado que aplicarlo fuerte produce un efecto Smooth muy marcado y daña demasiado al detalle. En el caso de anime puede resultar efectivo para mayor cantidad de ruido. Segun el changelog presente en la documentacion el modo mas completo en funcionalidad y optimizaciones es el YV12, asi que si notan problemas con videos en otro modo de color, convierten a YV12. Sintaxis y valores por defecto: VagueDenoiser(threshold=0, method=3, nsteps=4, chromaT=-1, interlaced=false) La intensidad de aplicacion se regula con threshold, donde un valor de 0 estima la misma automaticamente (adaptativo). Valores menores que 0 desactivan filtrado de Luma. Regular este parametro es fundamental, dado que por ser un filtro solo espacial no tendra ningun problema en eliminar detalle si se lo aplica mas fuerte de lo que requiere el video. nsteps es el tipico parametro que a mayor valor mayor calidad pero mas lento el filtrado y viceversa. Valores tipicos recomendados son 3 a 6. Para activar filtrado de Chroma aumentan el valor de chromaT>=0, donde 0 es estimacion de intensidad automatica (adaptativo). Usan interlaced=true para videos entrelazados. El metodo de accion que se puede elegir con method varia desde 0 hasta 3. Aparentemente el orden de mas fuerte a mas suave es el siguiente: 1>3>0>2. Recomiendo usar el valor por defecto. Buenos resultados (sobre poco ruido) y buena conservacion de detalle en un video con poco detalle fino: VagueDenoiser(threshold=2, nsteps=6) Denoisers Temporales En este caso el analisis que determina como se filtra un determinado pixel se realiza sobre pixeles en la misma posicion pero de frames anteriores y posteriores. En este caso el radio del analisis se mide en frames. Este modo de filtrado suele ser menos agresivo que el espacial pero tambien mas amable con el detalle, y por ello recomendado para bajos niveles de ruido. TemporalSoften [YUY2-Y8-YV411-YV12-YV16-YV24] Filtro interno (incluido con AviSynth). Sintaxis: TemporalSoften(radius,luma_threshold,chroma_threshold,mode,scenechange) El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel con sigo mismo en mayor cantidad de frames adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor conservacion de detalle. luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente. Por defecto en mode=1, se puede setear en mode=2 para aprovechar un mejor desempeño del filtro temporal(mejor calidad y mayor velocidad). scenechange permite fijar un valor limite para no procesar imagenes involucradas en cambios de escena. El valor representa el cambio promedio de los pixeles entre frames. Un rango recomendado es 5<scenechange<30. Ejemplo de un buen punto de partida extraido de la wiki: TemporalSoften(4,4,8,scenechange=15,mode=2) Ejemplos sugeridos por piscator: Temporalsoften(2,3,3,mode=2,scenechange=6) (suave) Temporalsoften(3,5,5,mode=2,scenechange=10) (medio) Temporalsoften(4,8,8,mode=2,scenechange=10) (fuerte) Denoisers 3D Estos filtros realizan un analisis tanto espacial como temporal (ver explicaciones de las subcategorias anteriores) para decidir como se filtra en determinado pixel. La combinacion de estos dos enfoques en teoria les da a estos filtros una importante ventaja de calidad. Particularmente se destacan FFT3DFilter y DFTTest, dos filtros muy potentes que son capaces de eliminar enormes cantidades de ruido con muy alta precision. DeGrainMedian [YV12-YUY2] Su nombre lo dice todo, un denoiser espacio-temporal para eliminar grano. Rápido y efectivo. Cómo se usa y valores por defecto: DeGrainMedian(limitY=4, limitUV=6, mode=1) Valores posibles: para limitY(luma) [0-255], limitUV(chroma) [0-255] y mode [0 fuerte - 5 débil]. Buenos valores (de más débil a más fuerte) DeGrainMedian(limitY=2,limitUV=3) DeGrainMedian(limitY=3,limitUV=7) DeGrainMedian(limitY=2,limitUV=3).DeGrainMedian(limitY=2,limitUV=3) DeGrainMedian(limitY=3,limitUV=7).DeGrainMedian(limitY=3,limitUV=7) DFTTest [YV12-YUY2] Muy potente y preciso, pero lento. Funcionamiento similar a FFT3DFilter. Sintaxis y valores por defecto: DFTTest(Y=true, U=true, V=true, sigma=16.0, sbsize=12, sosize=9, smode=1, tbsize=5, tmode=0, tosize=0) Se puede usar por defecto y ya logra exelentes resultados en videos muy ruidosos: DFTTest() Aunque lo mas comun es que requieran reducir la fuerza de filtrado si se trata de un video relativamente limpio. Si ven que limpia mucho detalle reducen el valor de sigma. Por ejemplo, para una limpieza de muy alta calidad (muy lenta) sobre un video bastante limpio, pueden probar: DFTTest(sigma=4) Con Y, U y V se activa o desactiva el filtrado de los planos de luminancia, chroma_U y chroma_V respectivamente. sigma regula la fuerza del filtrado. sbsize es el tamaño del bloque(en pixeles) que se usa para muestrear el frame, a menor valor un filtrado mas preciso(se conserva mas detalle) pero mas lento, y viceversa. sosize regula el overlap o solapamiento entre bloques, por supuesto no puede ser mayor que sbsize-1 y de ser mayor a sbsize/2 el resultado de la resta sbsize-sosize debe ser multiplo de sbsize, :ojotes: asi dice en la docu. smode=1 indica que se usa el esquema de filtrado espacial de bloques y solapamiento. Pero puede ser cambiado a smode=0, lo que involucra que el filtro se mueva pixel por pixel y se transforme en algo ridiculamente lento, aunque tambien ultra preciso. En este modo no hay solapamiento y el valor de sbsize debe ser impar. El radio del filtrado temporal se fija con tbsize, que es la cantidad de frames tomados en cuenta alrededor del que se esta filtrando. Minimo tbsize=1, que equivale a filtrado solo espacial. Se pueden usar dos metodos de filtrado temporal: tmode=0 filtra frame por frame, centrandose en cada uno y desplazandose hacia ambos lados segun tbsize. En cambio con tmode=1 se procesan bloques de frames de tamaño tbsize, cuyo solapamiento es el valor tosize. La diferencia pasa por la velocidad y precision siendo mas preciso pero mas lento tmode=0. El filtro posee opciones de configuracion mas avanzadas, incluyendo la posibilidad de analizar el video en busca de un patron de ruido y con el optimizar el filtrado "enseñandole" al filtro a localizarlo. Importante: para funcionar requiere que libfftw3f-3.dll (http://www.fftw.org/install/windows.html) este presente en C:\Windows\System32. Descarga (documentacion incluida) FFT3DFilter [YV12-YUY2] Elimina ruido conservando la nitidez de la imagen (incluso aplicándolo fuerte). Mejora muchísmo la compresibilidad. Tambien ofrece una funcion de sharpen. Sintaxis y valores por defecto: FFT3DGPU(sigma=2.0, bt=3, plane=0, bw=32, bh=32, ow=bw/3, oh=bh/3) Cómo se usa: FFT3DFilter() -> config estandar que va bien para muchos casos FFT3DFilter(bt=5, sharpen=0.5, plane=4, ow=16, oh=16) -> opcion potente y de alta calidad, pero lenta, ideal para videos muy ruidosos. Parametros: Se pueden cambiar los valores de sigma para la fuerza del filtrado (1.0<sigma<1.5 débil, 2.0<sigma<2.5 medio, sigma=3.0 fuerte, sigma>3 más fuerte). Es el parámetro más importante, ojo con aumentarlo porque el filtro es muy potente. También el plane. Por defecto plane=0 solo pilla la luma, si ponemos plane=4 pilla luma y croma. Se pueden cambiar los valores de bt desde 2 a 5 (a mayor valor más frames serán tenidos en cuenta en el filtrado temporal). Si colocan bt=1 el filtro pasa a ser solo espacial o 2D. Es interesante mencionar que con el filtro funcionando solo en modo espacial la fuerza del mismo aumenta, es decir que se filtra mayor cantidad de ruido, especialmente en areas oscuras y/o de poco detalle. Sin embargo tambien se pierde detalle fino, como texturas. El termino medio se alcanza usandolo por defecto, aumentar el radio temporal hara que se salve mas detalle pero tambien se conservara mas ruido en ciertas areas. Usenlo como mas les guste. bw y bh son las dimensiones (ancho y alto) del bloque que usa el filtro para el muestreo del video, se pueden bajar para mejorar la calidad y aumentar la limpieza de ruido. Tambien se pueden editar los valores de ow y oh (el overlap o solapamiento entre bloques en el muestreo), que por defecto dependen de bw y bh como pueden ver en la sintaxis. Para mejorar la calidad se deben subir estos valores y por supuesto se pierde en velocidad (y viceversa), sin embargo el filtro tiene una limitacion y no se permite que 2*ow>bw y/o 2*oh>bh, asi que ojo con eso. Se puede usar la función sharpen, desactivada por defecto. Si se usa, los valores están entre 0.3 y 1.0; Su aplicacion aporta una ganancia notable de nitidez sin ruido extra, muy recomendable. Como podéis ver en la documentación tiene decenas de opciones más, que hacen de este filtro uno de los mejores. ojo al instalar! Se debe colocar el archivo fftw3.dll (que pueden descargar de http://ftp://ftp.fftw.org/pub/fftw/fftw3win32mingw.zip) en C:\Windows\System32. El filtro no funciona sin el. Descarga y Documentación FFT3DGPU [YV12-YUY2] Version del filtro FFT3DFilter con capacidad para aprovechar la GPU (placa de video) para el procesamiento. Requerimientos: -> DirectX 9.0c o superior (version de abril del 2006 en adelante). -> Placa de video con soporte DirectX 9 por hardware. En el caso de Nvidia de la linea FX5xxx en adelante, recomendandose de 6xxx en adelante. En cuanto a ATi, de 95xx en adelante. Sintaxis: FFT3DGPU(sigma, bt, sharpen, plane, ow, oh) Los parametros son los mismos que en el filtro FFT3DFilter. Tambien requiere del archivo fftw3.dll. Descarga y Documentacion FluxSmooth Sencillo filtro de ruido espacio-temporal. No particularmente efectivo, limpia mas detalle del que deberia a pesar de ser un filtro 3D, y de los mas suaves. Sin embargo parece resultar util para limpiezas muy ligeras y mejorar la compresibilidad. Sintaxis y valores por defecto: FluxSmoothT(temporal_threshold=7) -> filtrado solo temporal. FluxSmoothST(temporal_threshold=7, spatial_threshold=7) -> filtrado espacial y temporal. Los unicos parametros que se pueden configurar representan la fuerza del filtrado temporal y espacial por separado. Para limpiar muy suavemente y evitar perder detalle de mas, aunque bastante efectivo, particularmente sobre bordes: FluxSmoothST(2,2) Descarga y Documentacion Denoisers Temporales con Compensacion de Movimiento Se trata de analizar y detectar el movimiento del video para asi realizar una limpieza temporal mas precisa. MVTools+MDegrain MVTools es un plug-in de avisynth que incluye varias herramientas. El MVAnalyse se usa para la estimación y compensación de los objetos en movimiento de un video. Se basa en vectores de movimiento, los mismos que usa el códec XVID p.ej. a la hora de trabajar, lo que permite hacer una limpieza temporal mejor. Se puede usar la función MVAnalyse junto con cualquier denoiser, pero lo normal es usar los filtros MDegrain1 , MDegrain2 o MDegrain3. Este filtro trabaja teniendo en cuenta las una, dos o tres frames anteriores y la una, dos o tres frames posteriores, con lo que la limpieza es mucho más precisa. Limpia sin apenas alterar la imagen y es el que mejora más la compresibilidad de un video. Cómo se usan: Se carga el mvtools2.dll (ver introduccion a filtros externos) y copiamos del siguiente script una de las tres partes, según queramos usar el MDegrain1, 2 o el 3 MVTools con MDegrain1 super = MSuper() backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4) forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4) MDegrain1(super, backward_vec1, forward_vec1, thSAD=300, thSADC=400) MVTools con MDegrain2 super = MSuper() backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4) backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4) forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4) forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4) MDegrain2(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=300, thSADC=400) MVTools con MDegrain3 super = MSuper() backward_vec3 = MAnalyse(super, isb=true, delta=3, overlap=4) backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4) backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4) forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4) forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4) forward_vec3 = MAnalyse(super, isb=false, delta=3, overlap=4) MDegrain3(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, backward_vec3, forward_vec3, thSAD=300, thSADC=400) Lo único que debemos variar es el valor de thSAD y thSADC (unmbral para el filtrado de luma y chroma). Recordad que se puede aplicar más fuerte a la chroma sin que afecte a la imagen. Valores orientativos, después cada uno que pruebe: 100 para las fuentes excelentes200 para las muy buenas300 para las buenas400 para las normales-limpia más fuerte (es el valor por defecto) En la docu se explican el resto de opciones, pero por defecto van muy bien. Descarga y Documentación TTempSmooth [YV12-YUY2] Filtro temporal adaptativo al movimiento (solo trabaja en zonas estaticas de la imagen), y usa valores de referencia en frames anteriores y posteriores (hasta un máximo de 15!, 7 de cada lado). Tiene su tiempo pero se sigue usando. Cómo se usa y valores por defecto: TTempSmooth(maxr=3, LThresh=4, CThresh=5, scthresh=12.0, debug=false, interlaced=false) Valores posibles para maxr: de 1(menos frames, más rapidez, menos calidad) a 7(más frames, menos rapidez, mas calidad). LThresh, CThresh: limite de luma y chroma, rango: 1 a 256. Para regular la sensibilidad de deteccion de cambio de escena se ofrece el parametro scthresh. Para ver que frames estan siendo detectados como cambio de escena, y asi poder ajustar este valor de forma optima segun el video, pueden usar debug=true. Para monitorear la informacion que el filtro entrega pueden usar la utilidad DebugView. Para aplicar sobre video YV12 entrelazado, interlaced=true. No tiene efecto si el video es YUY2, dado que no hace falta. Descarga y Documentación 888: Filtros para Debanding El banding se presenta sobre zonas del video donde hay una variacion de color suave o gradual. El artifact o efecto indeseable consiste en bandas de colores solidos bien definidas en vez de una variacion de color continua, producto de una representacion con menos bits de los necesarios. Para ilustrar mejor este efecto ver imagen. Entonces los filtros dentro de esta subcategoria se ocupan de suavizar la transicion entre estas bandas, tratando de restaurar el gradiente de color. Quizas enfocados mayormente a post-proceso, es decir para filtrar durante la reproduccion, dado que si los usan para corregir el efecto y luego comprimir, el encoder es muy probable que vuelva a generar los artifacts al reducir la cantidad de bits como parte de la compresion. De todas formas basta que prueben y llegado el caso se podria aumentar la fuerza del filtro para ver si el efecto se conserva. GradFun2db [YV12-YUY2-RGB24-RGB32] Sintaxis: GradFun2db(thr) thr(valor real) regula la fuerza del filtro, por defecto en "1.2" Descarga GradFun2DBmod Esta funcion por supuesto ofrece mayor calidad y funcionalidad que el plugin anterior, en el que se basa. Descarga del script y discusion en doom9 Filtros requeridos: GradFun2db AddGrainC MaskTools2 RemoveGrain Agregar ruido de grano (AddGrainC) ayuda a disimular mejor el efecto, y me parece que tambien ayuda a evitar que ocurra de nuevo en futuras compresiones. Sintaxis y valores por defecto: GradFun2DBmod(thr=1.2, thrC=thr, str=0.8, strC=0.0, temp=50, custom="tu_generador_de_grano_favorito", show=false, screenW, screenH) Los parametros que fijan la intensidad de aplicacion son thr y thrC para luma y chroma respectivamente. La intensidad del grano generado se puede configurar con los parametros str y strC para luma y chroma respectivamente. Estos representan los parametros var y uvar del filtro AddGrainC. temp es el parametro seed de AddGrainC, que sirve para lograr un grano desde mas aleatorio (0) a mas estatico (100). Pueden usar el plugin generador de grano que prefieran, asi: custom="GrainFactory3()", pudiendo tambien agregar otros filtros en cadena separandolos por puntos, por ejemplo para usar supersampling: custom="spline36resize(resolution*2).addgrain(xx,0,0).spline36resize(resolution)". Con show=true a la salida se obtiene una comparacion donde se puede observar el frame original y el frame filtrado, junto a las diferencias entre ellos mostradas graficamente, asi como tambien los valores fijados para todos los parametros. Esto constituye una exelente herramienta de ayuda para la configuracion del filtro. screenH y screenW son las resoluciones, vertical y horizontal respectivamente, de la salida cuando esta activa la comparacion con show=true. Filtros para Deblocking Seguro ya habran notado esos feos bloques que aparecen en los videos comprimidos con los codecs mas modernos, que se hacen mas notables cuanto mas sobrecomprimido este el video. Ya se imaginaran para que sirven los filtros de esta subcategoria, pues si, se ocupan de remover a los nefastos bloques. BlindPP Buen filtro de bloques, potente y efectivo. Logra aniquilarlos con muy poca perturbacion del detalle, y ya que esta en eso limpia buena parte del ruido en general que pudiera haber, asi como tambien ofrece la posibilidad de filtrar ruido en bordes (ringing). Como localiza los bloques por su tamaño, debe ser aplicado antes de cualquier etapa de crop o resize para evitar que estas los deformen. Sintaxis y valores por defecto: BlindPP(quant=2, cpu=6, iPP=false, moderate_h=20, moderate_v=40) Para que ataque exclusivamente a los bloques se debe usar cpu=4. Valores menores (hasta 0) reducen la efectividad del deblocking. cpu=5 activa filtrado extra de ruido de Luma en bordes (deringing), y cpu=6 incluye tambien chroma. Aunque el filtro realiza un exelente trabajo solo con la funcion deblocking. La fuerza se fija con quant, y va desde 0 a 31. Usan iPP=true unicamente si su video es entrelazado. moderate_h y moderate_v (ambos desde 0 a 255) son limites para establecer hasta donde se filtra. Aumentar estos valores permite una menor agresividad (se filtran menos bloques, pero puede ayudar a conservar mas detalle), y viceversa. Ejemplo: Para filtrado de bloques y ruido en general, relativamente fuerte: BlindPP(quant=4, cpu=4) Descarga Deben descargarse el paquete DGMPGDec, donde viene incluido dentro del archivo DGDecode.dll. Deben usar dicho archivo como plugin. DeBlock [YV12-YUY2] Utiliza el filtro para deblocking presente en la decodificacion de H264. Es conveniente aplicarlo antes de cualquier resize o crop, para evitar alterar los bloques y dificultar o impedir su localizacion. Sintaxis: Deblock(quant,aOffset,bOffset) quant(valor entero, rango: 0 a 60) regula la fuerza del filtro. Por defecto es 25. aOffset(entero) modifica el limite de deteccion de bloques, a mayores valores el filtro sera aplicado tambien donde los bloques son menos visibles. Por defecto en 0. bOffset(entero) modifica la deteccion de bloques y la fuerza del filtro, a mayores valores mas fuerte es la aplicacion. Por defecto en 0. Si quant+aOffset es menor de 16 el filtro no hace nada. Filtros Sharpen aSharp [YV12] Se caracteriza por poseer capacidad de adaptarse ante situaciones en donde su aplicacion podria provocar ruido o enfatizar bloques, y asi lograr un mejor resultado que un filtro sharpen convencional como el interno incluido con AviSynth (Sharpen). Sintaxis: asharp(T,D,B,hqbf) T(valor real en el rango 0..32) representa el limite hasta donde el filtro sera aplicado (2 por defecto). Un valor de 0 no hara nada. D(real rango 0..16) permite configurar la fuerza con que el filtro adaptara su funcionamiento ante situaciones que lo ameriten, un valor de 0 desactiva completamente la capacidad de adaptarse. Valor por defecto es 4. Cuando esta activo el valor de T actua como maximo. B(real rango 0..4) permite activar y regular la adaptacion del filtro para evitar la aplicacion del filtro sobre bloques y empeorar aun mas los mismos. Un valor negativo desactiva esta funcion. Un valor igual o mayor a cero lo activa y cuanto mayor sea mayor influencia tendra al ser aplicado. Solo funciona con D>0. Por defecto esta desactivado (B=-1). hqbf(true,false). Ideal activarlo para videos con bloques, su funcion es filtrarlos, requiere que D>0. Por defecto esta desactivado (hqbf=false). aWarpSharp Segun lo que mis ojos me permiten observar, el resultado de aplicar este filtro difiere bastante de un efecto sharpen convencional. Lo que se observa es una compresion de los bordes difusos, "afinandolos" se podria decir. Esto ofrece un efecto sharpen muy potente en videos borrosos, pero no es magico, tambien distorsiona detalle fino y deforma objetos pequeños. Por supuesto es posible regular los parametros para disminuir esta deformacion y aun asi se logra un efecto sharpen notable, no tan fuerte pero por lo menos mas normal. Debido a su principio de funcionamiento quizas sea mas recomendable para aplicar sobre dibujos animados o anime, donde se puede aprovechar mejor sin necesidad de reducir mucho su intensidad de aplicacion. Existen dos versiones de este filtro, la original cuyo desarrollo se abandono hace tiempo, y una version modificada y actualizada con mejoras de estabilidad y optimizaciones. Por razones historicas se mencionan ambas, pero lo mas recomendable es usar la nueva version. aWarpSharp original aWarpSharp(depth=16, blurlevel=2, cm=2) La intensidad de aplicacion se varia con depth, y les aseguro que querran bajarla si deciden usar el filtro sobre imagen normal ;-). blurlevel parece regular la magnitud de la deformacion, a menor valor mas acotada es esta, es decir que limita el sharpen pero tambien permite un efecto mas normal. Puede variar entre 1 y 4. cm es el modo de tratar la crominancia, donde un valor de 0 desactiva el filtrado de la misma. 1 y 2 son dos modos para filtrarla, donde 1 involucra a la luminancia y 2 es filtrado de chroma independiente. Segun la documentacion es mas recomedable usar cm=1. En mis pruebas lo que note fue una mayor estabilidad de color con dicho valor, ya que ciertos bordes quedaban sobre coloreados usando cm=2. aWarpSharp v2 aWarpSharp2(thresh=128, blur=2, type=0, depth=16, chroma=4) depth es la intensidad general de aplicacion, puede variar entre -128 a 127. Equivale a depth*blurlevel/2 (valores version original). thresh sirve para ajustar la deteccion de bordes, reducir para bajar la agresividad del filtro. Variable entre 0 y 255. blur permite regular la intensidad de la deformacion, puede variar entre 0 y 100. Disminuir este valor implica aumentar el efecto sharpen, pero disminuye la calidad de usarse el filtro en alta intensidad y/o agresividad, en cuyo caso conviene aumentarlo. type=1 ofrece mejor calidad pero es mas lento que usar type=0. Al usar type=1 el valor por defecto de blur pasa a ser 16 dado que para lograr el mismo efecto sharpen debe ser 8 veces el valor que con type=0. Para elegir el modo de procesar crominancia: chroma=0 anula crominancia (deja al video en blanco y negro); chroma=1 ignora la informacion de chroma y produce un video inservible; chroma=2 la copia tal como esta en el original (cm=0); chroma=3 la procesa de forma independiente (cm=2); chroma=4 la procesa basandose en la informacion de luminancia (cm=1). MSharpen Filtro sharpen que posee la particularidad de poder ser configurado para solo aplicarse sobre los bordes (detalle grueso). Esto se logra mediante una mascara que "oculta" las zonas de la imagen sin este detalle y evita que el filtro se aplique sobre las mismas. Util para evitar amplificar el ruido de fondo. Por supuesto, la cantidad de detalle que abarca la mascara puede ser configurada, segun hasta donde queramos que se filtre. Sintaxis y valores por defecto: MSharpen(mask=false, threshold=10, strength=100, highq=true) Para poder ver el detalle que esta siendo cubierto por la mascara colocan mask=true. Luego pueden disminuir el parametro threshold para abarcar detalle mas grueso, o viceversa. Una vez tienen este parametro bien configurado, quitan de la sintaxis mask=true. La fuerza de aplicacion se fija con strength, como de costumbre. Imponer highq=false implica mayor velocidad pero menor calidad en la deteccion de detalle. Ejemplo: Primero usamos la mascara para configurar que detalle sera filtrado: MSharpen(mask=true, threshold=10) Una vez establecida la mascara (se bajo threshold para abarcar detalle mas grueso) se puede proceder al filtrado: MSharpen(threshold=7) LimitedSharpenFaster Esta funcion tiene como objetivo agudizar la nitidez del video minimizando la aparicion de efectos indeseables. Vendria a ser un filtro sharpen con proteccion contra efectos como halo, ruido mosquito, aliasing, todos aquellos comunmente encontrados al aplicar un filtro sharpen. Debo decir que hasta ahora es el mejor filtro sharpen que he visto, los resultados que logra son impresionantes, pero claro esto no viene gratis y hay que sacrificar tiempo siendo mucho mas lento que aplicar un filtro sharpen convencional. Visto que el objetivo de la funcion es ofrecer un aumento de la nitidez limitado para evitar los artifacts ya mencionados, de necesitar resultados mas fuertes, en vez de aumentar la fuerza de aplicacion a lo bruto puede que sea mas conveniente recurrir a un filtro convencional sin las protecciones. Filtros requeridos: MaskTools v2 RemoveGrain WarpSharp (solo para Smode=1) Sintaxis y valores por defecto: LimitedSharpenFaster(Smode=3, edgemode=0, strength=100, Lmode=1, ss_x=1.5, ss_y=1.5, dest_x, dest_y, soft=0, wide=false) Smode(1,2,3,4) selecciona el modo de operacion. Estos modos son: 1-UnsharpMask, 2-Sharpen, 3-Range sharpening, 4-Nonlinear sharpening. Los primeros dos aplican los filtros que les dan nombre, mientras que los ultimos dos aplican un metodo propio del script LSF. Mis pruebas me mostraron que el modo (3) parece ser el mas eficiente (relacion sharpen/calidad). edgemode(-1,0,1,2), permite elegir si agudizar solo el detalle de bordes (1) o solo el detalle de todo lo que no sea bordes (2), o todo (0). (-1) muestra lo que el filtro identifica como bordes. Usar edgemode=1 es ideal para cuando quieren evitar amplificar innecesariamente ruido de fondo y/o para videos con bajo nivel de texturas, les recomiendo que lo prueben. strength(0 a inf), este parametro regula la intensidad con la que se agudiza el detalle. En Smode=2, el valor esta limitado entre 0-100, y representa el rango de 0.0 a 1.0 del filtro Sharpen; valores mayores son tomados como 100. Por defecto el valor es de 100 salvo para Smode=1 donde es de 160. El valor de este parametro puede subirse sin miedo, dado que por diseño la funcion "limita" el efecto si este podria causar artifacts, aunque por supuesto de subirlo mucho estos se haran notables. Lmode(0,1,3), controla la forma en que la funcion limita el efecto sharpen para evitar los artifacts. Un valor de (0) desactiva la limitacion, (1) limita normalmente sobre toda la imagen y (3) no limita sobre bordes pero si lo hace normalmente sobre todo lo demas. ss_x y ss_y(>=1.0) permiten aplicar el metodo llamado supersampling (cuando son mayores que 1.0), que se trata de primero usar resize para agrandar la imagen, aplicar el filtro, y luego resize al tamaño original (internamente se utiliza el filtro lanczos). El objetivo de hacer esto es evitar la aparicion de aliasing, aunque tampoco conviene subir mucho estos valores para evitar reducir la efectividad del filtro, lo ideal es usar los minimos que eviten el aliasing. Con dest_x y dest_y pueden indicar una resolucion de salida, para asi ahorrarse una etapa de resize. soft(-1 a 100) suaviza (efecto smooth) el efecto del filtrado, es decir que se deberia ocupar de limpiar ruido que haya sido amplificado durante el mismo. Su intensidad dependera de que tanto ruido haya en el video antes de aplicar la funcion. Tambien podria usarse como filtrado ligero de ruido si por ejemplo tambien usan edgemode=1, ya que de esta forma el filtro no amplifica el ruido que pudiera haber sobre fondos o areas de poco detalle y soft puede trabajar de forma mas eficiente sobre el ruido que suele presentarse en dichas areas. (-1) calcula automaticamente un valor apropiado. wide=true en vez de tomar los limites locales de un pixel en una matriz de 3x3 pixeles aledaños, utiliza una matriz de 5x5, y permite lograr mejores resultados si el video original esta muy borroso y/o si se usa supersampling. Existen otros parametros que no se mencionan, pero que no deberian necesitar para una correcta aplicacion del filtro. De todas maneras pueden recurrir a la Ejemplo: LimitedSharpenFaster(edgemode=1, ss_x=1.0, ss_y=1.0) -> efecto sharpen sin proteccion contra aliasing y aplicado solo sobre bordes. Descarga (click derecho->guardar archivo como...) Pueden leer mas sobre la filosofia detras de su funcionamiento aqui, aunque se trata de una version anterior lo que alli se explica seguro sigue siendo valido, pero no presten atencion a los parametros y sus valores, eso cambió. LSFmod Modificacion de la funcion LimitedSharpenFaster, que agrega importantes mejoras de versatilidad, asi como tambien otras correcciones y optimizaciones varias. Al igual que la funcion original, el objetivo es el aumento de nitidez del video tratando de evitar o por lo menos minimizar la aparicion de los artifacts comunes a la aplicacion de un filtro sharpen. Visto que la razon principal de esta modificacion es ofrecer una mayor versatilidad en la configuracion, de no buscar hilar muy fino seria mejor que usen la version original, para evitar complicarse de mas con la gran cantidad de parametros extra. Filtros requeridos: MaskTools v2 RemoveGrain WarpSharp (solo para Smode=1) VariableBlur (solo para Smode=2) Sintaxis y valores por defecto: LSFmod(defaults="fast", strength=100, Smode=3, Smethod=2, kernel=11, preblur="OFF", secure=true, source, Lmode=1, soft=0, soothe=true, keep=20, edgemode=0, edgemaskHQ=false, ss_x=1.5, ss_y=ss_x, dest_x, dest_y, show=false, screenW=1280, screenH=1024) El parametro defaults permite predeterminar el valor de todos los demas. Desde ya que aunque fijen este parametro tambien pueden fijar los demas, en cuyo caso el valor del parametro que fijen manualmente es el que se usa. defaults="old": funcionamiento exactamente igual a la funcion LimitedSharpenFaster por defecto. Equivale a los mismos valores mostrados en la sintaxis salvo por: secure=false, soothe=false, keep=25, edgemaskHQ=truedefaults="fast": es la config por defecto, y son los valores mostrados en la sintaxis, que corresponden a una aplicacion rapida del filtro.defaults="slow": aplicacion lenta pero en teoria de mayor calidad. Los parametros diferentes a los por defecto son: Smode=5, Smethod=3, secure=true, Lmode=4, soft=-2, edgemaskHQ=true.Como siempre, strength regula la fuerza de aplicacion. Dado que el proposito de la funcion es limitar el efecto para evitar remarcar o crear ruido, pueden subir el valor de este parametro sin miedo (dentro de limites razonables claro). Se pueden usar diferentes modos para lograr el efecto sharpen, segun el valor de Smode sea igual a: 1-UnSharp Masking (filtro WarpSharp); 2-UnSharp Masking (filtro VariableBlur); 3-Range Sharpening; 4-NonLinear Sharpening (original); 5-NonLinear Sharpening (corregido). A su vez, los modos 3, 4 y 5 pueden aplicarse usando tres metodos diferentes, que se fijan como Smethod=: 1-3x3 kernel; 2-Min/Max; 3-Min/Max + 3x3 kernel. En mis pruebas (usando Smode=3), el primer metodo lo note menos agresivo que el segundo, es decir que el efecto sharpen era notablemente inferior. Mientras que el tercer metodo no presenta mucha diferencia respecto del segundo, apenas se nota que es mas agresivo. El valor de kernel solo afecta a los metodos 1 y 3, y permite incrementar su agresividad. El valor por defecto es la minima agresividad, y de ahi puede tomar los valores: 20, 12 y 19, en orden de menos a mas agresivo. Aunque no esperen grandes diferencias, por lo que pude ver se nota mas en fondos y areas de colores solidos. Solo en los modos 3, 4 y 5, para evitar producir ruido sobre bordes (ringing), se puede activar preblur="ON". Y si ademas se desea evitar reforzar el ruido en general, se puede usar este parametro junto con su filtro de ruido favorito, por ejemplo asi: preblur="FFT3DFilter(plane=4)". Esto en el caso de que no hayan filtrado el ruido previamente. secure=true (solo util en los modos 3, 4 y 5) evita el efecto de bandas sobre gradientes de color, asi como tambien la apariencia aceitosa. Segun mis observaciones lo que hace este parametro es reducir o directamente anular la aplicacion del efecto sharpen sobre fondos o superficies de color solido, y asi logra evitar los problemas mencionados. Recomendable dejarlo activado. Lmode sirve para configurar la forma en que la funcion limita el efecto sharpen. No limitar equivale a mayor agresividad pero tambien a mayores artifacts. Los valores posibles son: 1-Limita la aplicacion de forma general; 2-Limita la aplicacion solo sobre bordes (mayor agresividad sobre fondos, colores solidos, texturas); 3-Limita a cero la aplicacion sobre bordes y normal sobre todo lo demas (menor agresividad sobre bordes); 4-Limita normal sobre bordes y tambien limita pero mas agresivo sobre lo demas. Para compensar el efecto sharpen se puede hacer uso de soft, que puede variar de 0 a 100. Un valor de -1 calcula un valor automaticamente igual que en la funcion original, y un valor de -2 calcula automaticamente segun un nuevo metodo de LSFmod. Ignoro las diferencias. Para reducir la inestabilidad temporal(ruido aleatorio en general y artifacts sobre el movimiento) y el aliasing, limitando un poco mas el efecto sharpen, se puede aplicar soothe=true. El parametro keep es el minimo porcentaje de efecto sharpen que se debe dejar pasar, es decir que pone un maximo a que tanto puede debilitarse el efecto sharpen de estar usando soothe=true. edgemode=0: filtra todo; =1: filtra solo bordes (similar a usar secure=true); =2: filtra todo lo que no sea bordes; =-1 muestra los bordes. edgemaskHQ=true: misma mascara de bordes que la version original; =false: mascara mas rapida pero de menor calidad. Para controlar el aliasing(efecto serrucho en bordes) estan presentes los tipicos factores de supersampling: ss_x y ss_y, cuyo valor equivale a un resize de tantas veces la imagen original, aplicacion del filtro y vuelta a tamaño original. No usen valores muy altos porque limitaran mucho el efecto sharpen, solo el minimo para evitar el aliasing. Con dest_x y dest_y pueden indicar una resolucion de salida, para asi ahorrarse una etapa de resize. Colocando show=true pueden aprovechar una funcionalidad extra de la funcion que consiste en mostrar a la salida una comparacion entre el video antes y despues de aplicar el filtrado, junto con informacion sobre la configuracion. Los valores de screenW y screenH son las resoluciones horizontal y vertical de la imagen de salida respectivamente. Una utilidad mas que interesante la encuentran en el parametro source. Basicamente este les permite definir un video de referencia, para que la funcion no aumente la nitidez mas alla de este. Es decir que pueden usar la funcion para restaurar el detalle perdido en una etapa de filtrado de ruido. El uso vendria a ser: video_original filtro_de_ruido() LSFmod(source=video_original) Ejemplo: a = last FFT3DFilter(bt=5, plane=4, bw=32, bh=32, ow=16, oh=16) LSFmod(source=a) Ejemplos: Aplicacion identica a la funcion LSF original por defecto: LSFmod(defaults="old") Partiendo de la configuracion por defecto de LSF original pero aprovechando las mejoras de la nueva version: LSFmod(defaults="old", secure=true, soothe=true, preblur="ON") -> tengan en cuenta que la finalidad de estas nuevas opciones es controlar los artifacts, cosa que logran reduciendo el efecto sharpen. SeeSaw Cuando se busca el aumento de la nitidez de un video, lo que se recomienda para lograr un resultado satisfactorio es hacerlo mediante dos etapas de filtrado, ambas opuestas en objetivos. Una etapa de filtrado de ruido (o efecto smooth) y la etapa de efecto sharpen. Esto se hace asi porque de aplicar solo el efecto sharpen el ruido ya presente se veria muy intensificado y el resultado aunque tendria la mayor nitidez tambien se veria bastante mal por el incremento del ruido. Entonces un resultado que podriamos llamar estable se consigue combinando ambas etapas de filtrado, que siendo opuestas tienden a ofrecer un termino medio aceptable. De aplicarse primero el filtrado de ruido, luego el sharpen podra aplicarse de forma segura sin miedo a intensificar el ruido que ya no esta. Pero de usar este orden mucho del detalle fino se pierde con la primer limpieza, y dicho detalle no puede ser recuperado. Si primero se aplica el sharpen, todo el detalle esta disponible para ser intensificado. Pero luego, debido a la prescencia potenciada de ruido, se debe aplicar el smooth, y este proceso contraresta mucha de la ganacia de detalle obtenida en la primer etapa. Por supuesto, lo que se busca es el termino medio sea cual sea el metodo que se use. La funcion SeeSaw se ocupa de realizar este proceso de dos etapas automaticamente. Sin embargo no usa ninguna de las aproximaciones mencionadas por si solas, sino que combina ambas tratando de permanecer en un punto intermedio y asi obtener los mejores resultados. Resumiendo: el resultado se vera beneficiado por una disminucion del ruido y un aumento de nitidez. Por otro lado, si el original posee efecto halo, este se vera notablemente intensificado. Importante: esta funcion esta pensada para videos que ya se ven razonablemente bien. Aplicarla directamente sobre videos que poseen artifacts mas "pesados" que simple ruido no es recomendable sin antes ayudar con algo de filtrado previo que apunte especificamente a dichos artifacts. El filtrado de ruido lo hacen con su filtro denoiser favorito, asi SeeSaw trabaja comparando el video filtrado por ustedes con el original. Esto les permite elegir el mejor filtrado de ruido segun sus preferencias y las circunstancias. Tambien pueden aplicar la funcion directamente, aprovechandose el filtrado interno de ruido, que utiliza el filtro RemoveGrain, aunque lo mejor es usar un denoiser aparte. Filtros requeridos: RemoveGrain y Repair MaskTools v2 Sintaxis: SeeSaw("video original", "video con ruido filtrado", Sstr=1.5, ssx=1.0, ssy=ssx, NRlimit=2, NRlimit2=NRlimit+1, Slimit=NRlimit+2, bias=49) Sstr es la intensidad de aplicacion. El supersampling (para evitar aliasing) se fija con ssx y ssy, pero segun la documentacion no es necesario, a lo sumo usar bajos valores como 1.25 deberia ser suficiente. NRlimit representa el maximo cambio que puede sufrir un pixel por el filtrado de ruido, por lo que aumentar este valor potencia el filtrado de ruido. Pero ojo porque NRlimit2 y Slimit por defecto dependen de este, asi que si solo se definen este parametro se estara aumentando la agresividad en general de la funcion. De necesitarse solo regular la funcion que representa este parametro se deben definir los otros dos explicitamente. NRlimit2 tambien limita cambios por denoising, pero en una etapa de filtrado intermedia, no la definitiva, por ello por defecto tiene un valor mas alto. Slimit es el limite del cambio maximo de un pixel por efecto sharpen. Aumentar este valor incrementa el efecto sharpen. Visto que SeeSaw trata de mantenerse en un estado intermedio entre los dos metodos comentados, se ofrece el parametro bias para inclinar la balanza hacia el metodo sharpen->smooth, o de mayor detalle fino pero mas ruido (bias>=50); o hacia el metodo smooth->sharpen, menor ruido pero bajo detalle fino (bias<50). Tiene mas parametros, como pueden ver en el script, pero no creo que valga la pena mencionarlos y lo que les recomiendo es que los dejen como vienen por defecto. Ejemplo 1: a = last b = a.Denoiser_Favorito() SeeSaw() Ejemplo de uso generico. El a = last indica que se toma el video tal como esta al llegar a dicha linea. Ejemplo 2: LoadPlugin("H:\tallervideo\Filtros Avisynth\fft3dfilter.dll") LoadPlugin("H:\tallervideo\Filtros Avisynth\mt_masktools-26.dll") LoadPlugin("H:\tallervideo\Filtros Avisynth\RepairSSE2.dll") LoadPlugin("H:\tallervideo\Filtros Avisynth\RemoveGrainSSE2.dll") Import("H:\tallervideo\Filtros Avisynth\SeeSaw.avs") DirectShowSource("C:\...\video.avi") a = last b = a.FFT3DFilter(bt=5, plane=4, ow=16, oh=16) SeeSaw(a, b, Sstr=1.0) Ejemplo de script completo. Se disminuye la fuerza de la funcion para un mejor resultado en un video de buena calidad. Se aplica el exelente filtro de ruido FFT3D en un modo de alta calidad e intensidad media. Ojo que este ejemplo posee una etapa de filtrado de ruido bastante potente. Sharpen [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] El filtro Sharpen es el unico filtro para dicho efecto que viene incluido con AviSynth. Sintaxis: Sharpen(amount,MMX) Sharpen(amountH,amountV,MMX) Donde 0.0<amount<1.0 es un valor real y representa la fuerza del filtro. En la segunda forma de invocarlo la variable amountH sirve para indicar por separado la intensidad del filtro en forma horizontal, mientras que se indica con amountV la vertical. MMX(true,false): activado por defecto. Si se desactiva (MMX=false) se puede evitar la aparicion del efecto "halo", donde se forman "bandas claras" en los contornos de los objetos. Sin embargo su desactivacion previene al filtro de aprovechar las capacidades MMX del procesador y por ende resulta en una caida de la velocidad, asi que solo desactiven si notan molesto dicho efecto. Ejemplo: Sharpen(0.85) Conversion de Color ConvertToXXX [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Convierte el video al espacio de color elegido. Util cuando el filtro que quieren usar solo soporta algunos formatos especificos o uno solo en particular, como por ejemplo el filtro SpatialSoften, que solo soporta trabajar sobre YUY2. Tambien en el caso de que el codificador a donde envian el video soporte un formato de color de entrada especifico. Sintaxis: ConvertToXXX(matrix,interlaced,chromaplacement,chromaresample) XXX puede ser: RGB, RGB24, RGB32, YUY2, Y8, YV411, YV12, YV16, YV24. En matrix pueden elegir entre usar: "Rec.601"(default), "PC.601", "Rec.709" y "PC.709", todos van con comillas incluidas. Esto le indica al filtro cual es el rango de colores. Los Rec reducen el rango a aquel soportado por la TV analogica(16,235) y los PC procesan el rango de color completo(0,255). Segun la informacion en la wiki matrix="Rec.601" debe ser usado cuando la fuente es XviD/DivX o capturas analogicas; matrix="Rec.709" en cambio se recomienda usarlo cuando la fuente es HDTV o DVD. interlaced puede ser true o false(default) y lo activan cuando la fuente es entrelazada. chromaplacement se usa cuando convierten desde o hacia YV12, pueden elegir entre "MPEG2" (default), "MPEG1" o "DV", con las comillas incluidas. chromaresample es el filtro de reescalado que se usa para la crominancia en los casos en donde la misma tiene diferente resolucion entre los formatos de color que se estan convirtiendo. Puede usarse cualquiera de los mencionados en el filtro Resize, el default es chromaresample="Bicubic". Ajustes de Color y Niveles Aqui encuentran todo lo relacionado a regular color, brillo, contraste, gamma, etc. ColorYUV [YUY2-Y8-YV411-YV12-YV16-YV24] Filtro interno que ofrece varias formas de modificar color y luminancia(brillo y contraste) de un video en formato de color YUV (no sirve para RGB). Sintaxis: ColorYUV(gain_y, off_y, gamma_y, cont_y, gain_u, off_u, cont_u, gain_v, off_v, cont_v, opt, levels) gain_y es un multiplicador del maximo valor de luminancia, es decir que aumenta el nivel de blanco, estirando hacia arriba, desde el minimo valor(nivel de negro, que no se modifica), la gama de valores de luminancia, por supuesto con el objetivo de lograr una mayor luminosidad. Puede tomar valores entre 0 y 1024. En el filtro Tweak esto equivale al parametro cont. Para lograr un aumento de (k+1) veces, deben colocarle al parametro un valor de k*256, por ejemplo para aumentar 1.2 veces el nivel de blanco usan gain_y=51.2. gain_u y gain_v hacen lo mismo con la crominancia (planos U y V, azul y rojo respectivamente), pero no tiene mucho sentido su aplicacion, dado que produce un estiramiento hacia el azul o el rojo que arruina los colores. off_y vendria a ser el brillo, o el equivalente al parametro bright del filtro Tweak. Lo que hace la funcion brillo es sumarle o restarle a la luminancia un determinado valor, en este caso definido por el parametro off_y. off_u y off_v aplican el mismo concepto a la crominancia, pero nuevamente no son utiles dado que producen un corrimiento hacia azul o rojo, en este caso aun mas marcado dado que se modifican todos los valores por igual. cont_u y cont_v sirven para regular el color, tal como el parametro sat del filtro Tweak. Esta funcion lo que hace es estirar los valores de crominancia desde el centro hacia afuera, reduciendo el minimo nivel y aumentando el maximo, y es en esto que difiere de gain, que solo aumentaba el maximo. Este comportamiento permite evitar el problema del corrimiento que si producian off y gain cuando se usaban con la crominancia. Lo que hay que tener en cuenta es que como los parametros regulan los canales V y U por separado, para regular el color en general deben definir ambos parametros con el mismo valor. Los valores siguen el mismo criterio que el parametro gain. cont_y es lo mismo pero aplicado a la luminancia y se puede usar para aumento de contraste, con la salvedad de que como tambien se modifica el nivel de negro, se notara un oscurecimiento muy marcado de la imagen. Por ello, salvo se busque especificamente reducir el nivel de negro, es mejor usar la funcion gain_y para aumento de contraste convencional. Opcionalmente es posible limitar el rango de valores de luminancia colocando opt="coring". De hacerlo, todos los valores fuera del rango de [16,235] seran eliminados. Mediante levels="PC->TV" o levels="TV->PC" es posible realizar la conversion del rango de luminancia, entre el de la PC: [0,255], y el de la TV: [16,235]. Como pueden ver esta conversion lo que hace es modificar los valores limite para el nivel de negro y nivel de blanco, asi que el efecto es el mismo que aplicar la funcion cont_y. Ejemplos: Para aumentar contraste 1.2 veces -> ColorYUV(gain_y=51.2) Para aumentar color 1.2 veces -> ColorYUV(cont_u=51.2, cont_v=51.2) Para aumentar brillo -> ColorYUV(off_y=10) Para disminuir brillo -> ColorYUV(off_y=-10) GreyScale [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Convierte el video a escala de grises (blanco y negro), pero sin cambiar el formato de color. Sintaxis: Greyscale() Tweak [YUY2-Y8-YV411-YV12-YV16-YV24] Con el podremos regular a gusto contraste, brillo, saturacion y color. Es sumamente util y nos permitira lograr algun que otro efecto muy interesante. Sintaxis: Tweak(hue,sat,bright,cont,coring,startHue,endHue,maxSat,minSat,interp) hue(-180.0 a +180.0, por defecto en 0.0): tiñe la imagen hacia un determinado color. Valores mayores llevan la imagen hacia el rojo, mientras que valores menores lo hacen hacia el verde. sat(0.0 a 10.0, por defecto en 1.0): ajusta la saturacion del color, o sea que este vendria a ser el valor que ajusta la intensidad del color. Valores por debajo de 1.0 la reducen y viceversa. bright(-255.0 a +255.0, por defecto en 0.0): regula el brillo. Con bright>0.0 se aumenta, mientras que a valores negativos se disminuye. cont(0.0 a 10.0, por defecto en 1.0): contraste, 1.0 es sin variacion, valores inferiores lo bajan, valores mayores lo aumentan. coring(true o false, por defecto true): lo que hace cuando esta activado es limitar la luminancia a valores en el rango [16,235], siendo este el rango de TV. De definirse como false se usa el rango de PC, que es [0,255]. Limitar el rango equivale a impedir que algunas areas de la imagen tomen valores muy negros o muy blancos. maxSat(por defecto 150.0) y minSat(por defecto 0.0) (ambos van desde 0.0 a 150.0, en porcentaje): permiten definir el rango de valores de saturacion que debe tener un pixel para que se le aplique el filtrado que regulan los parametros hue y sat. Por ejemplo, util para cuando solo desean aumentar el color de ciertas areas de la imagen sin saturar las demas. Para RGB el valor maximo sera de 100.0 (100%), para otros espacios de color esta permitido usar hasta 150.0(150%). startHue(por defecto 0.0) y endHue(por defecto 360.0) (ambos desde 0.0 hasta 360.0 en grados): igual que los anteriores, definen un rango para la aplicacion de los parametros hue y sat, solo que en este caso el rango consiste en los valores de hue de cada pixel. interp(0 a 32, por defecto 16): se usa para interpolar (de forma lineal) los valores de minSat y maxSat, en el rango [minSat-interp,minSat] y [maxSat,maxSat+interp]. Con interp=0 no hay interpolacion, util por ejemplo cuando el video se compone unicamente de colores uniformes (anime por ej). Ajustes de Framerate Filtros destinados a trabajar sobre los frames por segundo o FPS de un video. AssumeFPS [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: AssumeFPS(fps,sync_audio) AssumeFPS(numerator,denominator,sync_audio) AssumeFPS(clip1,clip2,sync_audio) AssumeFPS(preset,sync_audio) Se ocupa de modificar el framerate de reproduccion sin modificar el conteo de frames (causando que el video se reprodusca mas rapido o mas lento de lo normal). Si se usa sync_audio=true (false por defecto) tambien modificara el sample rate del audio para igualar la duracion del video. Esto tambien constituye un metodo para modificar unicamente el sample rate del audio. fps es un numero real que representa los frames por segundo, aunque es mas conveniente cuando se trata de NTSC utilizar la relacion 30000/1001 (en vez de 29.97) o 24000/1001 (en vez de 23.976), utilizando los valores numerator y denominator para el numerador y el denominador respectivamente. Esto se recomienda dado que cuando especifican un numero real avisynth lo pasa a una relacion, entonces siendo 23.976 y 29.97 resultados aproximados de las relaciones ya mencionadas en la realidad cuando avisynth los pase no dara la relacion estandar exacta. Tambien pueden valerse de presets ya existentes para elegir los FPS segun los estandares, mediante el valor preset, y segun los mencionados en la tabla de esta pagina. Si otro video esta presente (mediante clip2 es posible agregarlo) entonces el frame rate del video original (clip1) sera igualado al mismo, util cuando se desean unir dos videos de framerate ligeramente distintos. Ejemplo: AssumeFPS(24000,1001,true) Permite modificar los FPS a 23,976 y tambien modifica el audio. ChangeFPS [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Modifica el frame-rate eliminando o duplicando frames, sin modificar la duracion. Sintaxis: ChangeFPS(fps,linear) ChangeFPS(numerator,denominator,linear) ChangeFPS(clip1,clip2,linear) ChangesFPS(preset,linear) linear=false (por defecto en true) evita que AviSynth pida los frames de una forma lineal. El resto de parametros y su funcion coinciden con el filtro AssumeFPS, asi que pueden guiarse con dicha descripcion. Decimate [YUY2-YV12] Elimina frames de un video. Util para reducir el frame rate de videos con frames duplicados. Opera eliminando un frame de un grupo de N frames, siendo N un parametro configurable, metodo tambien llamado 1-in-N. Sintaxis: Decimate(cycle,mode,threshold,threshold2,quality,ovr,show) cycle fija el valor de N, es decir que se elimina un frame cada N frames. Rango: 2-25 (por defecto: 5). mode determina el modo de operacion del filtro. Rango: 0-3 (por defecto: 0). mode=0: el filtro descarta el frame del ciclo de N frames que se determina como el mas similar a su predecesor. mode=1: en vez de eliminar el frame detectado como duplicado, lo reemplaza por una interpolacion entre dicho frame y el siguiente, o lo deja pasar. El algoritmo elige que opcion tomar basandose en: si el ciclo de frames es de un video con pulldown 3:2 o video puro(sin frames duplicados); el valor de threshold. Este modo esta recomendado para material hibrido, es decir con partes del video con frames duplicados y partes con el frame rate puro. mode=2: elimina un frame de la seguidilla mas larga de frames detectados como duplicados. Este modo se recomienda como el mas confiable para usar con Anime o material donde el movimiento ocurre solo en cada segundo, tercero, cuarto, etc frame. mode=3: en vez de eliminar el frame mas similar, el filtro aplica diferentes estrategias al ciclo de frames segun sea un ciclo con pulldown 3:2 o un cliclo puro. Ciclos de video puro los procesa de forma normal. A los ciclos con duplicados se les aplica una mezcla de frames, de tal forma que de 5 frames queden 4. Hay dos factores que le permiten decidir al filtro como proceder: si el ciclo de frames es o no puro y en el valor de threshold. Este modo es util para videos hibridos que tienen mayormente video sin frames duplicados. threshold, valor decimal, por defecto 0.0; como se dijo en mode=1 los frames detectados como duplicados se pueden tratar de dos formas, se los interpola o se los deja pasar cuando la diferencia metrica entre frames supera el valor del threshold (siempre y cuando este sea mayor que cero). Esto es ultil porque permite configurar el filtro para que sepa que considerar como duplicado y que no en un determinado video. Para saber que valor usar se aplica la funcion show(true,false), que muestra sobre el video el valor de la diferencia metrica entre frames. Este valor afecta mode=3 de forma similar. No sirve para mode=0. threshold2: valor real, por defecto 3.0; en mode=2 este parametro establece cuan cerca dos frames deben estar para ser considerados duplicados quality: entre 0 y 3, por defecto en 2, regula la calidad de la deteccion de frames duplicados. 0 es mas rapido y 3 mas lento. ovr: acepta texto donde se especifique la ubicacion de un archivo para forzar la desicion del filtro, es decir en ciertos casos el video habra salido perfecto salvo un par de frames en donde el filtro se equivoco, entonces pueden forzar la aplicacion del filtro sobre esos frames en particular mediante un archivo de texto de extension .dec, sonde deben especificar dichos frames con su correspondiente numero, uno por renglon. Ej: ovr="C\...\anular.dec". FUENTE: manual de referencia (Reference Manual) incluido en la descarga. FDecimate [YV12-YUY2] Permite remover frames de un video, con el objetivo de variar la tasa de frames por segundo, sin producir desincronizacion audio/video. La diferencia con el filtro Decimate es que permite reducir el frame rate a cualquier valor de forma eficaz, dado que no esta restringido a solo eliminar 1 frame cada tantos (metodo tambien llamado 1-in-N) sino que es capaz de detectar y eliminar los frames duplicados cuando le es posible. El metodo de 1-in-N para remover frames no puede ser utilizado cuando el proceso que se aplico para duplicar los frames en primer lugar no fue de la misma indole (ej: videos a 120FPS). Sintaxis: FDecimate(29.97) Por supuesto en vez de 29.97 ponen el valor deseado. PullDown [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: PullDown(a,b) Proceso tambien llamado telecine, se trata de representar el primer frame mediante a campos y el segundo mediante b campos, y asi se repite hasta el final del video. Por ejemplo: un telecine 2:3 o 3:2 (a:b) modifica el framerate de 23.976 a 29.97 agregando campos duplicados, dos para el primer frame y tres para el segundo, y asi hasta el fin del video. Usar a=0 y b=3 (0:3) es lo mismo que deshacer el pulldown 3:2 (29.97 -> 23.976). Este ultimo no lo probe asi que ignoro si realmente funciona, aunque el pulldown 2:3 o 3:2 si debiera hacerlo sin problemas. Oscurecimiento de Lineas Con videos de anime como objetivo, sirven para remarcar las lineas negras. FastLineDarken 1.3 MT MOD [YV12] FastLineDarknen cumple la función de marcar los bordes, dejándolos mas negros de lo normal y según mis pruebas, algo muy levemente engrosados. Ayuda bastante para bordes que se ven pálidos o se ven poco. cumple la misma función que toon, pero obviamente conlleva a artifacts por ser rápido pero no me refiero a q si se ocupa de manera común salga, todo lo contrario si se hace abuso de este como sucede con toon, saldrán los molestos puntos negros dentro de los cuerpos de los elementos. *Nota: en espacio de color, no importa el formato que tenga el video en dicho aspecto, pues con el filtro ConvertToYV12() se anula el error de color que nos saldría en megui o virtualdub al ocupar el script, pues este nos hará la conversión a dicho formato de color. Claro que este comando debe colocarse como el primer filtro dentro del script, porque hay casos en los cuales algunos filtros no lo detectan si no esta entre los primeros. Requerimientos: MaskTools2 Funcionamiento: FastLineDarkenMOD(strength, luma_cap, threshold, thinning) *Nota: en la información saldrá puesto FastLineDarken(strength, luma_cap, threshold, thinning), pues bien, debemos agregarle la frase MOD al final, de lo contrario lanzará el ejecutor del script (Megui, Virtualdub, VirtualdunMod) el error de función no existente. strength (Fuerza): desde 0 hasta 256. Default: 48 Regula la fuerza del filtro. Representa la maxima reduccion de luminancia, es decir el maximo oscurecimiento que puede sufrir una linea. luma_cap (Luminancia): desde 0 a 255. Default: 191 0 representa el blanco, 255 representa el negro, es decir, aquí adecuamos la cantidad de color del borde, de claro a oscuro. threshold (Umbral): Default: 4. No hay información certera del parámetro máximo de esta opción. Valor de 0 inhabilita este parámetro. Se recomienda poner el valor 4, ya que hay una gran cantidad de pixeles que son marcados al azar, los cuales se oscurecen débilmente. El valor 4 viene a solucionar eso. thinning (Adelgazamiento): desde 0 a 256. Default: 24 Cantidad de adelgazamiento opcional de la linea. El valor 0 desactiva esta función, y esto a la vez da una gran velocidad en el filtrado. *Nota 1: hay que tener en cuenta que el adelgazamiento oscurece un poco os pixeles restantes en cada linea. *Nota 2: se recomienda dejar thinning=0, si se pone valores mas altos que 0, y si mal no estoy es un parametro que quedo mal editado creo, el video queda completamente cubierto de una capa verde por encima, quedando los detalles por detrás. Para evitar esto dejar, como ya mencione, thinning=0. Discusión en doom9.org Recuerden copiar el texto en un archivo .avs, es decir, abren el block de notas, copian el texto, lo pegan en el block de notas, van al menú archivo, luego hacen click en guardar como, colocan el nombre del filtro con extension .avs (ejemplo: FastLineDarken 1.3 MT MOD.avs) y hacen click en guardar. Si se fijan se guardará en un archivo .avs y esta listo para usarse. Citar ############################## # FastLineDarken 1.3x MT MOD # ############################## # # Written by Vectrangle # Didée: - Speed Boost, Updated: 11th May 2007 # # * requires mt_masktools v2 # * requires yv12 input # # Usage is FastLineDarkenMOD(strength, luma_cap, threshold, thinning), # named parameters are supported eg FastLineDarken(thinning=0) # # Note that you must import this avs into your script using import("...\FastLineDarken.avs") # # Parameters are: # strength (integer) - Line darkening amount, 0-256. Default 48. Represents the _maximum_ amount # that the luma will be reduced by, weaker lines will be reduced by # proportionately less. # luma_cap (integer) - value from 0 (black) to 255 (white), used to stop the darkening # determination from being 'blinded' by bright pixels, and to stop grey # lines on white backgrounds being darkened. Any pixels brighter than # luma_cap are treated as only being as bright as luma_cap. Lowering # luma_cap tends to reduce line darkening. 255 disables capping. Default 191. # threshold (integer) - any pixels that were going to be darkened by an amount less than # threshold will not be touched. setting this to 0 will disable it, setting # it to 4 (default) is recommended, since often a lot of random pixels are # marked for very slight darkening and a threshold of about 4 should fix # them. Note if you set threshold too high, some lines will not be darkened # thinning (integer) - optional line thinning amount, 0-256. Setting this to 0 will disable it, # which is gives a _big_ speed increase. Note that thinning the lines will # inherently darken the remaining pixels in each line a little. Default 24. # # Changelog: # 1.3 - added ability to thin lines, now runs much slower unless thinning=0. Changed the defaults (again) # 1.2 - huge speed increase using yv12lutxy =) # - weird darkening issues gone (they were caused by yv12layer) # - show option no longer available due to optimizations. Use subtract() instead # 1.1 - added luma_cap option # 1.0 - initial release # function FastLineDarkenMOD( clip c, int "strength", int "luma_cap", int "threshold", int "thinning") { ## parameters ## str = string(default(strength, 48) /128.) lum = string(default(luma_cap, 191)) thr = string(default(threshold, 4)) thinning = default(thinning,24) thn = string(thinning /16.) ## filtering ## exin = c.mt_expand().mt_inpand() diff = mt_lutxy(c,exin,yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? 127 +",uexpr="x",vexpr="x",u=2, v=2) linemask= mt_lut(diff.mt_inpand(),"x 127 - "+thn+" * 255 +").RemoveGrain(20,-1) thick = mt_lutxy(c, exin, yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? "+str+" * x +",uexpr="x",vexpr="x",u=2, v=2) thin = mt_lutxy(c.mt_expand(),diff,yexpr="x y 127 - "+str+" 1 + * +",u=2, v=2) return (thinning == 0) ? thick : mt_merge(thin,thick,linemask,y=3,u=2,v=2) } Toon El filtro Toon nos ayuda prácticamente a remarcar las lineas de los dibujos animados, los bordes. Por ejemplo, si poseemos una fuente de video en donde las lineas de los bordes están o muy suavizados o simplemente no vienen con un buen marcado como corresponde, este nos ayudara a darle el realce que necesita. Recordar siempre que no se debe abusar del filtro en su parámetro, si se abusa, por ejemplo, en fuentes buenas que solo necesitan de 0.3 de parámetro, pero se le coloca 0.6, es muy probable que aparezcan puntos negros en el cuerpo del dibujo en escenas de movimiento, que es donde mas se notará, pero no se quedaran fijas, sino que saldrán en ciertos frames del video y de manera rápida, no sera constante, pero aparecerán esos defectos. Requisitos: aWarpSharp Como se usa: Toon(strength) Nota: valor máximo de strength: 1.0 Recomendados: Toon(0.25) - Para fuentes en buen estado y que necesitan solo un marcado suave de bordes Toon(0.30) - Para fuentes donde las lineas necesiten un poco mas de filtrado. Toon(0.35)- Para Fuentes que necesiten marcar bastante las lineas, de bordes algo débiles Toon(0.40) - Potencia algo mas que fuerte ya para bordes bien malas Hice pruebas con 0.65, y ahí ya me salieron fallas como las mencionadas anteriormente, la de aparición de puntos negros en el cuerpo del dibujo, todo lo q esta dentro de los bordes, no en exceso, pero con buen ojo se nota. ya del Toon(0.40) hacia adelante, les dejo la responsabilidad a cada uno y según su propio criterio. Info General y Descarga(v1.0) Discusion en Doom9's.org (Ingles) Existe una version modificada del filtro aWarpSharp (ver seccion filtros sharpen), que posee mejoras de estabilidad, calidad y optimizaciones. La version 1.1 del filtro Toon es la version 1.0 modificada para poder trabajar con la nueva version de aWarpSharp. aWarpSharp2 888: Efectos AddGrainC [YV12-YUY2-RGB] Genera ruido tipo grano y otros efectos derivados, como por ejemplo ruido que simula la lluvia. Sintaxis y valores por defecto: AddGrainC(var=1.0, uvar=0, hcorr=0, vcorr=0, seed=-1, constant=false) var y uvar: desviacion estandar para la generacion de ruido para luma y chroma respectivamente. En español: la intensidad de generacion de ruido. hcorr y vcorr(0.0-1.0): correlacion horizontal y vertical. Aparentemente aumentar estos valores produce un efecto de suavizado. seed>-1 implica usar una secuencia de grano que se repita, o sea a mayores valores el grano se vuelve mas estatico. constant=true implica un grano constante a lo largo del video, es decir que un patron de grano se repita en todos los frames. Ejemplo de efecto lluvia: AddGrainC(var=800,vcorr=0.9) GrainFactory3 Funcion generadora de ruido cuya intencion es simular un tipo de ruido llamado grano plateado (silver grain). Ademas de lograr dicho efecto, introducir ruido de grano en un video puede servir para hacer mas "visibles" para el codec ciertas zonas del video donde hay muy poco detalle (ideal para zonas oscuras), y que de otra forma serian sobrecomprimidas llevando a la aparicion de los nefastos bloques. Tambien podria servir para disimular la falta de detalle muy fino (texturas), y evitar una apariencia plastica. Usese con precaucion, agregar ruido significa enormes perdidas de compresibilidad. Filtros requeridos: AddGrainC MaskTools2 Sintaxis y valores por defecto: GrainFactory3(g1str=13, g2str=15, g3str=25, g1shrp=60, g2shrp=66, g3shrp=80, g1size=1.50, g2size=1.20, g3size=0.90, g1tex=0, g2tex=0, g3tex=0, temp_avg=0, ontop_grain=0) #=1 -> areas oscuras, #=2 -> areas intermedias, #=3 -> areas brillantes g#str(0-???): intensidad de aplicacion. g#shrp(0-100): nitidez del grano. g#size(0.5-4.0): tamaño del grano. g#tex(0-100): intensidad de la apariencia de textura. temp_avg(0-100): porcentaje de uniformidad temporal. Es decir que si se usa temp_avg=100 el ruido sera estatico durante todo el video, o dicho de otra forma no variara de posicion entre frames. Valores intermedios son posibles por supuesto. El valor por defecto representa ruido completamente aleatorio. ontop_grain(0-???): ruido adicional que se puede agregar sobre una aplicacion previa. La aplicacion por defecto quizas produce demasiado ruido, si buscan un efecto ligero pueden probar reduciendo los valores de g#str, por ejemplo: GrainFactory3(g1str=7, g2str=8, g3str=13) Reverse [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Simple, se ocupa de que el video sea reproducido al reves, de atras hacia adelante. En origen entrelazado la paridad entre campo superior e inferior se modifica. Sintaxis: Reverse() Subtitulado Subtitle [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Una instancia de este filtro (incluido con AviSynth) agrega una linea de texto fija a un determinado rango de frames. De necesitarse agregar diferentes lineas se deben usar varias instancias del filtro. No es un filtro para subtitulado de traduccion, para ello esta VSFilter. Sintaxis: Subtitle(text, x=8, y=size, first_frame=0, last_frame=ultimoframedelvideo-1, font="Arial", size=18.0, text_color=$00FFFF00, halo_color=0, align=4, spc=0, font_width=pordefectodelsistema, font_angle=0.0, interlaced=false) El texto del subtitulo va en text. x e y son las coordenadas en las que se centra el subtitulo. font: fuente del texto. Todas las fuentes instaladas en el sistema estan disponibles. size: altura del texto en pixeles. text_color(por defecto amarillo 100% opaco) y halo_color(por defecto negro 100% opaco): color del texto y color del borde del subtitulo, se fijan en codigo hexadecimal $aarrggbb (ver aqui), salvo por las primeras dos cifras que representan el porcentaje de transparencia, donde 00 es completamente opaco, y FF completamente transparente. Pueden usar esto ultimo para desactivar el borde. Para elegir como se alinea al subtitulo respecto de la coordenada fijada con x e y se hace uso de align. Pueden ver una tabla de como se usa este parametro aqui, les debo la traduccion. spc: modificar el espacio entre caracteres. font_width: ancho de cada letra. font_angle: angulo de inclinacion de la letra. interlaced: activar en videos entrelazados. VSFilter Filtro dedicado a pegar subtitulos sobre el video. Archivos soportados: .sub, .srt, .ssa, .ass, .pcb, .smi Sintaxis: TextSub("C\...\subtitulos.ass") -> para archivos de subtitulos que contienen texto (SRT, SSA, ASS) VobSub("C\...\subtitulos.sub") -> para archivos de subtitulos que contienen imagenes, como aquellos extraidos de un DVD-Video. Descarga 888: MCTemporalDenoise Muy completa y compleja funcion, que ademas de trabajar como denoiser temporal compensado por movimiento, ofrece numerosas opciones extra de pre y post-procesado(PP). Estas se iran abordando a medida que se expliquen los parametros que las que representan. Estos filtros de post-proceso pueden utilizarse por separado, es decir sin aplicar el filtrado de ruido, y es esto ultimo lo que confiere a esta funcion su caracter de multiproposito. Filtros y funciones necesarias: (incluidos aquellos filtros requeridos por estas funciones) MVTools v2 MaskTools v2 RemoveGrain y Repair FFT3DFilter FFT3DGPU (en lugar del anterior, solo si usan GPU=true) TTempSmooth LSFmod WarpSharp (solo para SHmode=1) VariableBlur (solo para SHmode=2) EEDI2 SangNom DeBlock_QED DeBlock DCTFilter GradFun2DBmod GradFun2db AddGrainC Sintaxis: MCTemporalDenoise() MCTemporalDenoisePP() -> Sin filtrado de ruido, para cuando se quiere aplicar el filtrado de post-proceso de forma independiente. Este incluye las etapas de filtrado marcadas con "PP", que son las unicas que pueden ser invocadas por esta linea (es decir que solo pueden definir sus parametros). Y ojo porque vienen todas desactivadas por defecto, por lo que asi como esta la sintaxis no sirve de nada, asegurense de habilitar la/s etapa/s que deseen usar. Parametros: (segun la etapa de filtrado que afectan) Filtrado de ruido El radio temporal (cantidad de frames) se fija con el parametro radius entre "1" y "6", por defecto en "2", puede aumentarse para un filtrado mas preciso pero mas lento. Como parte del proceso se realiza un prefiltrado con el filtro FFT3DFilter, por lo que el parametro sigma se utiliza para regular su fuerza, desde un valor de "0" (que desactiva el prefiltrado) para arriba. Por defecto esta en "4.0" Si se busca un efecto mas fuerte (y mucho mas lento) se puede usar twopass=true para que se apliquen dos pasadas de filtrado en lugar de una. Se encuentra disponible el uso del filtro TTempSmooth mediante el parametro useTTmpSm=true, para un filtrado mas potente pero mas lento. El efecto de la o las pasadas de denoising (si se usan dos) puede ser limitado mediante limit y limit2 (primer y segunda pasada). Pueden tomar valores desde "-1", que calcula la limitacion automaticamente y es el valor por defecto para ambas pasadas, hasta "255", pasando por el "0" que desactiva la limitacion. Obviamente a mayores valores mayor es la limitacion, pero creo que lo mas recomendable es usar la estimacion automatica aprovechando que la funcion posee dicha capacidad. Para colocar una etapa de filtrado de ruido extra entre la salida del denoiser temporal y las etapas de post-procesado se hace uso de post. Como en esta etapa tambien se usa FFT3DFilter, este parametro equivale al sigma de dicho filtro y regula su fuerza. Este filtrado extra se desactiva usando post=0, que es como se encuentra por defecto. El procesamiento de crominancia se habilita mediante chroma=true, por defecto esta desactivado. Si su video es entrelazado tienen a su disposicion interlaced=true. FFT3D Configuracion de este plugin. Los valores de bwbh y owoh representan el tamaño de bloque (con el que se muestrea la imagen) y solapamiento entre bloques respectivamente, que afectan la precision espacial del filtro. A menores valores mayor calidad pero menor velocidad, por defecto: bwbh=16y owoh=8 si el video es detectado como HD, o bwbh=8 y owoh=4 en caso contrario. Sepan tambien que por una limitacion del filtro, owoh no puede ser nunca mayor a la mitad de bwbh. Notaran que para altas resoluciones los valores son mas elevados, eso es para que la velocidad sea razonable aunque si buscan calidad extrema, los bajan. La precision temporal tambien es configurable desde el parametro bt, siendo por defecto "3", puede subirse hasta "5" o bajarse hasta "1" (el filtrado pasa a ser solo espacial o 2D). ncpu permite especificar el numero de hilos de procesamiento, en caso de que posean un procesador de mas de un nucleo. Por defecto es "1". Solo sirve para la version comun desde ya. Si se desea usar la version FFT3DGPU en vez de la original, basta colocar GPU=true. Y la precision de calculo se puede regular con precision, por defecto "2". La funcion incorpora una rutina (activada por defecto) que corrige cierto comportamiento del filtro FFT3D, a partir del cual se genera efecto banding. Se puede eliminar esta correccion mediante fixband=false. MVTools Configuracion de este conjunto de herramientas, que son las encargadas de la deteccion y compensacion del movimiento, para todas las etapas de filtrado donde esta se aplica. blksize y overlap, son tamaño de bloque y solapamiento para el muestreo de la imagen, por defecto: blksize=16 y overlap=8 si el video es detectado como HD, o blksize=8 y overlap=4 en caso contrario. Los parametros thSCD1 y thSCD2 controlan la sensibilidad de deteccion de cambio de escena. El primero establece que tanta diferencia debe existir entre dos bloques del muestreo para que se considere que hubo dicho cambio; de aumentarse el valor mayores diferencias seran necesarias, por defecto "300". El segundo indica cuantos de estos bloques donde se detecta el cambio son necesarios para considerar que el frame es un cambio de escena, por defecto "100". Aumentar estos parametros implica mayor fuerza de filtrado en general, dado que le quitan precision a la deteccion de movimiento. thSAD sirve para poner un limite a la compensacion, dado que a menores menos bloques seran compensados. Por defecto "300", debe incrementarse para una mayor precision y calidad en caso de estar configurando un filtrado general mas potente. Si se desea una estimacion del movimiento de mayor coherencia, es decir que sea mas inteligente al identificar el movimiento, se puede usar truemotion=true. La nitidez de la interpolacion interna se puede fijar con MVsharp, estando en "2" por defecto que es el modo de mas nitidez, pudiendo tambien ser "1" para interpolacion bicubica, o "0" para bilinear, en orden de mayor a menor nitidez. Util para videos que requieren mucha limpieza, en cuyo caso ademas de aumentar la fuerza de filtrado se puede reducir la nitidez de la interpolacion para un resultado mas "suave". Nitidez (PP) Esta etapa de post-proceso se encuentra activada por defecto, y puede ser desactivada mediante sharp=false. Trabaja de forma adaptativa, aplicando el efecto sharpen solo sobre areas quietas y con detalle, evitando la amplificacion de ruido. Si se quiere que el efecto se aplique de igual forma en toda la imagen se puede usar adapt=false. El filtro sharpen utilizado es la funcion LSFmod, que pueden ver descripta detalladamente en la seccion de filtros sharpen y los parametros de esta que pueden invocarse son: strength, por defecto "100"; SHmode, por defecto en "3" (equivale a Smode en LSFmod); SHmethod, por defecto en "3" (equivale a Smethod en LSFmod); Slimit, por defecto "0" (equivale a Lmode en LSFmod). Este ultimo parametro solo regula la limitacion espacial, para limitacion temporal compensada por movimiento esta Tlimit, activada por defecto con un valor de "true". Proteccion de estrellas o puntos brillantes (PP) protect=true habilita esta funcionalidad, deshabilitada por defecto. El nivel de brillo que debe tener un area para ser procesada se fija con cutoff, desde "0"(todo) hasta "255", por defecto "64". threshold es otro parametro que establece si se filtra o no, en este caso representa el cambio maximo de luminancia que debe existir, desde "0" hasta "127", por defecto "16". De subir este valor menos areas seran filtradas. Y por ultimo maxdiff fija el maximo cambio que sufre el area filtrada(considerada como punto brillante) respecto de la imagen original. "0" copia exactamente igual, por defecto "4" puede llegar hasta "255". Anti-aliasing (PP) Para evitar el efecto serrucho en bordes. Se activa colocando AA=true, ya que por defecto viene apagado. Se puede elegir entre dos filtros de reescalado: EEDI2(por defecto) o Sangnom, mediante useEEDI2, donde se usa "false" para cambiar a Sangnom. A valores mas altos de AAthr, se procesan solo bordes mas gruesos. Por defecto "32", va de "0" a "255". El filtro de reescalado usado para regresar al tamaño original(luego de la etapa de AA) tambien puede elegirse entre tres opciones con el parametro method, segun el nivel de nitidez. Los valores posibles son: "0"->Bilinear; "1"->Spline36; "2"->Lanczos4, en orden de menor a mayor nitidez. DeBlocking (PP) Se aplica un filtrado de bloques, previamente al filtrado de ruido, si se coloca deblock=true. Por defecto se usa la funcion DeBlock_QED, aunque tambien puede usarse el plugin DeBlock(mas agresivo) poniendo useQED=false. Pueden definirse los parametros quant1 y quant2 de DeBlock_QED (ver descripcion de la funcion en la seccion Restauracion para mas info), y sus valores por defecto son "20" y "40" respectivamente. De usarse DeBlock, su parametro quant se toma como quant1+quant2 / 2, o sea un valor por defecto de "30". Limpieza de bordes (PP) Para aprovechar esta funcionalidad deben poner edgeclean=true. Consiste en limpieza de ruido solo en bordes de zonas sin detalle fino, asi que no provoca perdidas de calidad. La distancia que se filtra desde el borde se puede regular con ECrad, por defecto "3". Y el tamaño de los bordes que se filtran se regula con ECthr, entre "0" y "255", a mayor valor bordes mas finos no son procesados. Por defecto "32". El filtro por defecto usado para la limpieza es RemoveGrain, pero pueden usar cualquier plugin o funcion que deseen mediante el parametro ECmode. Por ejemplo: ECmode="DFTTest()". Estabilizacion (PP) Se aplica si usan stabilize=true. Se trata de usar el filtro TTempSmooth (ver subcategoria de denoisers temporales) para eliminar restos de ruido aleatorio solo sobre fondos. Los parametros de este plugin que son accesibles son: maxr para regular el radio temporal (frames), a mayor valor una imagen mas estable, puede ir desde "1" a "7" y por defecto es "1"; TTstr, fuerza de aplicacion, por defecto "1", puede llegar hasta "256". Areas solidas (PP) Esta etapa se ocupa de eliminar el efecto banding (ver categoria Restauracion) y previene que se generen bloques en la compresion (mediante el agregado de ruido de grano). Por supuesto unicamente si enhance=true esta presente. Se hace uso de la funcion GradFun2DBmod, cuyos parametros presentes son: GFthr para regular la fuerza, donde "1.0" apaga el filtrado, y de ahi para arriba, por defecto "1.2"; AGstr, para la fuerza de AddGrainC, es decir la intensidad del ruido de grano generado, por defecto "0.8", de ponerse en "0.0" no se agrega grano; temp para la estabilidad del grano, a mayor valor un ruido menos aleatorio, es decir menos "nervioso" como le suelen decir, donde "0" es mas nervioso y "100" completamente estatico, por defecto "50". Vale aclarar que cuanto mas estatico mas compresible. El parametro bias permite fijar un balance entre grano generado sobre areas brillantes versus areas oscuras. Aumentando el valor se inclina dicho balance hacia las areas mas brillantes y viceversa. Por defecto en "64", puede ir desde "-1" que equivale a desactivar el balance (grano uniforme), hasta "254". Config global Para usar prefiltrado de ruido personalizado, se debe usar la variable p, mediante la cual pueden definir el filtrado de ruido que deseen usar como prefiltrado (ver ejemplos). Y ojo porque este prefiltrado no es lo mismo que aplicar un filtro de ruido antes de la funcion y desactivar el prefiltrado interno. Deben definir la variable para que la funcion tenga internamente a su disposicion el video prefiltrado como una herramienta de comparacion. settings permite definir los valores de todos los parametros en base a una serie de presets, segun la fuerza de aplicacion. Las posibilidades, de menor a mayor fuerza, son: "very low", "low"(por defecto), "medium", "high" y "very high"; recuerden poner tambien las comillas. Si quieren saber que valores son asigandos a los parametros en cada preset, vean en el script de la funcion, donde como parte de la documentacion hay una tabla con todos los valores para cada preset. Debug Si ponen show=true, en vez del frame filtrado, se obtiene una imagen con la comparacion entre video de origen, prefiltrado y filtrado, junto con la configuracion completa de la funcion. Muy util para comparar. La resolucion de esta pantalla se puede modificar usando screenW y screenH, horizontal y vertical respectivamente. Por defecto: 1280x1024. Las etapas de post-proceso para nitidez y proteccion de puntos brillantes requieren de dos videos de entrada, aquel al que se le filtro el ruido y el original, dado que estas etapas tratan de restaurar la nitidez y los puntos brillantes que pudieran haber sido perjudicados en el filtrado de ruido. Para lograr esto se ofrecen dos variables que deben ser definidas antes de invocar alguna de estas etapas: source, que debe ser el video previo al filtrado de ruido; y denoised, que debe ser el video luego del filtrado de ruido. source = last denoised = source.filtro_de_ruido() Ejemplos: MCTemporalDenoise(sharp=false) -> solo filtrado de ruido, es decir que se desactiva la unica estapa de PP que viene habilitada por defecto. MCTemporalDenoise(deblock=true) -> habilita filtrado de bloques como pre-procesado. MCTemporalDenoise(AA=true, protect=true, edgeclean=true, stabilize=true, enhance=true) -> todas las etapas de PP activadas, aprovechando al maximo las capacidades de la funcion. MCTemporalDenoisePP(edgeclean=true) -> solo etapas de PP, sin filtrado de ruido, y en este caso solo la funcion de limpieza de ruido en bordes. source = last denoised = source.DFTTest() MCTemporalDenoisePP(sharp=true) -> uso de la etapa de restauracion de nitidez. Para usar la proteccion de puntos brillantes es lo mismo, por supuesto activando dicha etapa. p = last.FluxSmooth() MCTemporalDenoise() -> prefiltrado personalizado, en vez del prefiltrado interno.

Guía Avisynth

  • by
Introducción Avisynth es un programa libre y gratuito destinado a realizar frameserver. Su finalidad es la decodificación de casi cualquier formato existente y la posterior aplicación de filtros, de los cuales incluye una enorme cantidad internos y posibilidad de utilizar externos; siendo este proceso realizado “al vuelo”, los frames descomprimidos y ya editados deben ser enviados a un programa codificador para así ser comprimidos nuevamente a un formato adecuado, avisynth no se ocupa de esta última tarea, siendo únicamente un programa destinado a frameserver. Cabe aclarar que no posee decodificadores/demultiplexadores propios, utiliza los instalados en el sistema, así que de todas formas habrá que poseer los decoders y splitters necesarios. El programa se configura enteramente desde un archivo de texto sin formato, también llamado “script”, el cual puede ser creado con el notepad o similares, y debe ser guardado con extensión AVS. En dicho texto se deben indicar los parámetros de decodificación y que filtros se aplicaran. Durante la instalación se les preguntara si desean instalar algunos extras, como por ejemplo la opción de asociar a Avisynth los archivos de extensión AVS ("Associate AVS with Notepad"), recomendable activarla para así identificar facilmente los script. Y también "Add Avisynth Script to new items menú", que les permite acceder a ClickDerecho->Nuevo->AviSynth Script para así crear ya automáticamente un archivo con extensión AVS. Una vez tienen ya el AVS deben abrirlo con el programa que usen para codificar como si de un archivo de video se tratara, Avisynth se ocupa del resto. Pueden encontrar al programa aquí Lo Básico Comencemos con los comandos para cargar un video, es decir los primeros que deben ir en el script, después de la carga de los filtros: AviSource("c:\carpeta\video.avi") Para cargar un archivo AVI. Entre las comillas se indica la ruta completa al archivo, aunque ésta se puede obviar (sólo se pone el nombre) si el fichero AVS está en la misma carpeta que dicho archivo. DirectShowSource("c:\carpeta\video.mp4", audio=false, fps=23.976, convertfps=true) Para poder cargar otros formatos que no sean AVI se utiliza esta línea, que hace uso del DirectShow y así permite demultiplexar/decodificar todo formato que posea un CODEC directshow adecuado instalado en el sistema, así como también 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 sólo es necesario en ciertos casos de decoders directshow que fallan en informarlo, como cuando se trata de achivos ASF. Si desean sólo cargar el video, pueden agregar audio=false a la linea, quedando video.mp4”, audio=false), y viceversa con video=false. Nota: es recomendable poner siempre esta línea cuándo se hace el uso del directshow: “,audio=false, fps=119.88, convertfps=true)”. Ésto para evitar problemas con raws de fps variable, es decir una raw de “VFR”. Filtros FILTROS Internos Debajo del nombre del filtro verán los formatos de color con los que dicho filtro puede trabajar. Llegado el caso en que su video esté en un formato no soportado por el filtro, pueden convertirlo usando el filtro ConvertToXXX, explicado más adelante. Filtro Resize [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] El primero que trataremos es quizás el más utilizado en la recompresión de videos, se trata del filtro Resize; avisynth nos ofrece unas cuantas variantes, donde las más conocidas y usadas son Bilinear, Bicubic y Lanczos, aunque se tratara de explicar en detalle todas las presentes. Este filtro se usa para modificar la resolución del video, para así estirarlo o comprimirlo (espacialmente hablando) lo necesario hasta alcanzar la resolución adecuada. Invocando los filtros de resize: BilinearResize(ancho,altura) BicubicResize(ancho,altura,b,c) LanczosResize(ancho,altura) Lanczos4Resize(ancho,altura) GaussResize(ancho,altura,p) BlackmanResize(ancho,altura) PointResize(ancho,altura) SplineXXResize(ancho,altura) , donde XX puede ser 16, 36 o 64 El ancho y altura deben indicarse con valores enteros, dado que la únidad más chica posible es el pixel. Explicación Detallada de cada variante: Bilinear: tiende a suavizar la imagen, esto significa que es el que menos detalle deja pasar al redimensionar, así que es adecuado para cuando usen bitrates bajos, y/o cuando se reduce la resolución. Bicubic: es similar en funcionamiento al anterior, pero gracias a mejores algoritmos logra procesar un mayor nivel de detalle y por ende es mejor para cuando se aumenta la resolución, ya que se logra una imagen más nítida, pero sólo es recomendable cuando habrá suficiente bitrate como para codificar dicho detalle extra, sino puede ser más conveniente el Bilinear si no quieren que la calidad caiga en picada al comprimir. Puede ser personalizado manualmente mediante los valores "b" y "c" que pueden ver en la sintaxis de más arriba. Estos parámetros son llamados blurring y ringing respectivamente; el blurring sirve para quitar nitidez, agregando un efecto “borroso” y así difuminando el detalle, puede servir para evitar la aparición de macrobloques al comprimir a muy bajos bitrates; mientras que el ringing hace todo lo contrario, a mayores valores más fino será el filtro y más detalle dejará pasar. Con b=0 y c=0.75 el filtro es idéntico al presente en VirtualDub, "VirtualDub`s Precise Bicubic". Un valor normal sería b=0 y c=0.5 para así lograr una importante ganancia de detalle, valores mayores a 0.6 pueden producir ruido dado que se estaría generando más detalle del que existe, aunque claro depende de la nitidez del video de origen, si lo amerita entonces pueden aumentar el valor de c. Lanczos: permite alcanzar aún más detalle y con mejor calidad que el Bicubic, sólo recomendable para altos bitrates. Sirve como alternativa al Bicubic con valores de “c” entre 0,6 y 0,75, sólo que logra una calidad superior en estos valores (menos artifacts). Lanczos4: es una abreviación a LanczosResize(taps=4). (Desarrollo pendiente). BlackMan: ésta es una modificación del Lanczos que permite lograr menos artifacts (errores) con valores de taps altos. Gauss: filtro basado en el algoritmo de Gauss. El parámetro "p" ajusta la nitidez, desde 0 (menor detalle, mas borroso) hasta 100 (mayor detalle, más fino). Su velocidad es similar al Lanczos4. Point: es el filtro para resize más simple que existe. Su uso no es para nada recomendable a no ser que se quiera disminuir la calidad del vídeo adrede. Sus resultados suelen contener mucho bloque. SplineXX: este filtro tiene como objetivo alcanzar un máximo nivel de detalle, con menos artifacts a raíz del mismo que si se usara Lanczos. XX puede valor 16, 36 y 64, cuanto mayor este valor mayor nitidez de lograra. Para una comparación entre filtros de resize pueden ver aqui (inglés) Desde la versión 2.56 de avisynth existe la posibilidad de cortar la imagen desde el mismo filtro de resize, como con el filtro Crop. Si se utiliza, en el proceso primero se corta y luego se aplica el resize. Usar esta línea: Crop(10, 10, 200, 300).BilinearResize(100, 150) Seria casi lo mismo que usar la siguiente: BilinearResize(100, 150, 10, 10, 200, 300) Este método es conveniente usarlo cuando quieren cortar parte de la imagen previa a su reescalado. Usándolo se logra mayor calidad en el reescalado de los bordes. Pero para cortar bandas negras o artifacts es mejor usar el filtro Crop. AddBorders [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: AddBorders(v,x,y,z,color) En ciertos casos no es posible modificar el tamaño (espacial) de un vídeo con sólo redimensionar dado que las resoluciones que se deben obtener son fijas para cumplir algún estándar, entonces con sólo dimensionar se dañaría el aspect ratio (AR) del mismo y éste se vería alargado o achatado; así que para llegar a la resolución definitiva hace falta completar los pixeles faltantes con bandas de un color solido, para ello se usa el filtro AddBorders; este filtro agrega una banda de pixeles de algún color de altura configurable por separado en cada margen. Vean la sintaxis, cada una de esas cuatro letras representan la cantidad de pixeles (valores enteros) que ocuparan las bandas contando desde cada uno de los cuatro márgenes. Las letras siguen el siguiente orden: "x": superior; "z": inferior; "v": izquierda; "y": derecha. Lo más común es agregar bandas arriba y abajo, pero también se agregan en los cuatro lados por ejemplo cuando se desea solucionar el efecto overscan. El parámetro "color" permite elegir un color distinto del negro (default, si no se especifica nada); este color lo deben indicar en código hexadecimal. Aquí pueden ver una lista con los códigos y colores soportados. Ejemplo: AddBorders(0,64,0,64,$00FFFF) Esta línea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nada más p:. Crop [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: Crop(x,y,-z,-k) ó Crop(izquierda,arriba,-derecha,-abajo) Debe tener los "-" o tirará error de mod4. Este filtro es muy simple de implementar, sirve para cortar cierta cantidad de pixeles de los lados de la imagen. Se debe indicar la cantidad a cortar de cada lado, donde "x" es izquierda, "y" es arriba, "z" es derecha y "k" es abajo. Una variante del mismo filtro es la siguiente: CropBottom(j) Remueve "j" líneas de la parte inferior de la imagen, especialmente útil para eliminar la distorsión inferior de un video capturado de un VHS. Blur / Sharpen [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] El filtro Blur tiene como objetivo distorsionar ligeramente la imagen suavizando los bordes de los objetos en el video (detalle), esto puede servir para disimular la aparición de bloques o pixelado, o también para facilitar la codificación a muy bajos bitrates sin causar feos artifacts en bordes o sectores de alto detalle que requieren mayor bitrate. Sintaxis Blur(x) Blur(x,y) Donde "x" es un valor real que puede variar entre -1.0 y 1.58, siendo los valores negativos lo mismo que usar el filtro sharpen con valores positivos. La segunda forma de invocarlo agrega la variable "y", que sirve para indicar por separado la intensidad del filtro en forma vertical, así queda la horizontal con la letra "x". El filtro Sharpen realiza justo lo opuesto, agudiza el detalle de la imagen, es decir que busca lograr una mayor nitidez. Puede variar entre 0 y 1.0 Sharpen(x) Sharpen(x,y) Las variables representan lo mismo que en Blur. SpatialSoften / TemporalSoften [SpatialSoften: YUY2/TemporalSoften: YUY2-Y8-YV411-YV12-YV16-YV24] Estos filtros se ocupan de eliminar el ruido de un video. Según la wiki oficial pueden lograr milagros (dice eso textualmente), y se recomienda mucho su uso. Eso sí, con cuidado porque a valores muy altos pueden liquidar detalle. También son muy lentos, especialmente a mayores valores del "radio". La diferencia entres ambos es que el Spatial compara pixeles adyacentes en un mismo frame, mientras que el Temporal compara frames adyacentes en un mismo pixel. El primero sin embargo parece ser el más efectivo. El Spatial sólo funciona en el espacio de color YUY2, así que si desean implementarlo y tienen como origen un formato distinto deberán convertirlo, lo cual será explicado en otro filtro próximamente. Sintaxis: SpatialSoften(radio,luma,croma) TemporalSoften(radio,luma,croma,escena,modo) Lamentablemente la info en la wiki sobre este filtro es algo escasa así que para mejor entendimiento de cómo influyen estos valores deberán recurrir a prueba y error. Todos los valores son enteros. "radio" representa el área circundante al pixel que el filtro analizará (en el caso del temporal serán cuantos frames adyacentes), cuanto mayor sea mejor se desempeñara el mismo, pero más lento resultará. "luma" y "croma" corresponden a los limites para luminancia y crominancia respectivamente a partir de los cuales se les aplicara el filtro, si la imagen posee valores por debajo el filtro no es aplicado. En el Temporal estos son considerados y filtrados por separado, pero en el Spatial sólo se procesan si ambos superan el límite. El valor "modo" por default es 1, pero puede setearse a 2 para aprovechar un mejor desempeño del filtro temporal (mejor calidad y mayor velocidad) agregado en la versión 2.56 de avisynth. Y por último "escena" permite fijar un valor límite para no procesar imágenes involucradas en cambios de escena. El valor representa el cambio promedio de los pixeles entre frames. Un rango recomendado es entre 5 y 30. Esta última opción requiere un procesador que soporte instrucciones ISSE. Ejemplo de un buen punto de partida (extraído de la wiki): TemporalSoften(4,4,8,15,2) Tweak [YUY2-Y8-YV411-YV12-YV16-YV24] Con él podremos regular a gusto contraste, brillo, saturación y color. Es sumamente útil y nos permitirá lograr algún que otro efecto muy interesante. Sintaxis: Tweak(color,sat,brillo,cont,luma,startcolor,endcolor,maxsat,minsat,interp) "color"(-180.0 / +180.0, default=0.0): tiñe la imagen hacia un determinado color. Valores mayores llevan la imagen hacia el rojo, mientras que valores menores lo hacen hacia el verde. "sat"(0.0 / 10.0, default=1.0): ajusta la saturación del color, este vendría a ser el valor que ajusta la intensidad del color. Valores por debajo de 1.0 la reducen y viceversa. "Brillo"(-255.0 / +255.0, default=0.0): regula el brillo. A mayores valores de 0.0 se aumenta, mientras que a valores negativos se disminuye. "cont"(0.0 / 10.0, default=1.0): contraste, 1.0 es sin variación, valores inferiores lo bajan, valores mayores lo aumentan. "luma"(opcional, true / false, default=true): true refleja el comportamiento de versiones anteriores de avisynth, básicamente lo que hace cuando esta activado es limitar la luminancia a [16,235], no me pregunten exactamente cuál es el efecto porque no lo sé, supongo que reduce la gama de valores que ésta pueda tomar y así evitar los extremos. "startcolor"(default=0.0) y "endcolor"(default=360.0) (ambos desde 0.0 hasta 360.0 en grados): permiten especificar un rango basándose en el color para el cual se aplicaran los valores de color y saturación antes descriptos. "maxsat"(default=150.0) y "minsat"(default=0.0) (ambos van desde 0.0 a 150.0, en porcentaje): permiten ajustar un rango basándose en la saturación del color para el cual se aplicaran los valores de color y saturación. Para RGB el valor máximo será de 100.0 (100%), para otros espacios de color está permitido usar hasta 150.0(150%). "interp"(0 / 32, default=16): se usa para interpolar (de forma lineal) los valores de minsat y maxsat, en el rango [minsat-interp,minsat] y [maxsat,maxsat+interp]. Con interp=0 no hay interpolación, útil por ejemplo cuando el video se compone únicamente de colores uniformes. Pueden ver algunos ejemplos de aplicación aquí. AssumeFPS [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: AssumeFPS(fps,syncaudio) AssumeFPS(num,den,syncaudio) AssumeFPS(clip1,clip2,syncaudio) AssumeFPS(preset,syncaudio) Se ocupa de modificar el framerate de reproducción sin modificar el conteo de frames (causando que el video se reproduzca más rápido o más lento de lo normal). Únicamente setea el parámetro FPS. Si en "syncaudio" colocamos true (false por default) también modificara el sample rate del audio para igualar la duración del video. Esto también constituye un metodo para modificar unicamente el sample rate del audio. "fps" es un numero real, aunque es más conveniente cuando se trata de NTSC utilizar la relación 30000/1001 (en vez de 29.97) o 24000/1001 (en vez de 23.976), utilizando los valores "num" y "den" para el numerador y el denominador respectivamente. Esto se recomienda dado que cuando especifican un numero real avisynth lo pasa a una relación, entonces siendo 23.976 y 29.97 resultados aproximados de las relaciones ya mencionadas en la realidad cuando avisynth los pase no dará la relación estándar exacta. También pueden valerse de presets ya existentes para elegir los FPS según los estándares, mediante el valor "preset", y según los mencionados en la tabla de esta página. Si otro video está presente (mediante "clip2" es posible agregarlo) entonces el frame rate del video original ("clip1") será igualado al mismo, útil cuando se desean unir dos videos de framerate ligeramente distintos. Ejemplo: AssumeFPS(24000,1001,true) Permite modificar los FPS a 23,976 y también modifica el audio. ChangeFPS [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Modifica el frame-rate eliminando o duplicando frames. Sintaxis: ChangeFPS(fps,syncaudio) ChangeFPS(num,den,syncaudio) ChangeFPS(clip1,clip2,syncaudio) ChangesFPS(preset,syncaudio) Los parámetros y su función son los mismos que AssumeFPS, así que pueden guiarse con dicha descripción. Reverse [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Simple, se ocupa de que el video sea reproducido al revés, de atrás hacia adelante. En origen entrelazado la paridad entre campo superior e inferior se modifica. Sintaxis: Reverse() Turn [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] TurnLeft() TurnRight() Turn180() Rotan el video 90 grados hacia la izquierda(left), derecha(right) o 180 grados. PullDown [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Sintaxis: PullDown(a,b) Proceso también llamado telecine, se trata de representar el primer frame mediante "a" campos y el segundo mediante "b" campos, y así se repite hasta el final del video. Por ejemplo: un telecine 2:3 o 3:2 ("a":"b") modifica el framerate de 23.976 a 29.97 agregando campos duplicados, dos para el primer frame y tres para el segundo, y así hasta el fin del video. Usar 0:3 es lo mismo que deshacer el pulldown 3:2 (29.97 -> 23.976). Este último no lo probé así que ignoro si realmente funciona, aunque el pulldown 2:3 o 3:2 si debiera hacerlo sin problemas. ConvertToXXX [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Convierte el video al espacio de color elegido. Útil cuando el filtro que quieren usar sólo soporta algunos formatos específicos o uno solo en particular, como por ejemplo el filtro SpatialSoften, que sólo soporta trabajar sobre YUY2. También en el caso de que el codificador a donde envían el video soporte un formato de color de entrada especifico. Sintaxis: ConvertToXXX("matrix",entrelazado,chroma1,chroma2) XXX puede ser: RGB, RGB24, RGB32, YUY2, Y8, YV411, YV12, YV16, YV24. En "matrix"(comillas incluidas) pueden elegir entre: Rec.601(default), PC.601, Rec.709 y PC.709, que le indica al filtro cual es el rango de colores. Los Rec reducen el rango a aquel soportado por la TV analógica(16,235) y los PC procesan el rango de color completo (0,255). Según la información en la wiki Rec.601 debe ser usado cuando la fuente es XviD/DivX o capturas analógicas; Rec.709 en cambio se recomienda usarlo cuando la fuente es HDTV o DVD. "entrelazado" puede ser true o false(default) y lo activan cuando la fuente es entrelazada. "chroma1" se usa cuando convierten desde o hacia YV12, pueden elegir entre MPEG2 (default), MPEG1 o DV. "chroma2" es el filtro de reescalado que se usa para la crominancia en los casos en donde la misma tiene diferente resolución entre los formatos de color que se están convirtiendo. Puede usarse cualquiera de los mencionados en el filtro Resize, el default es Bicubic. GreyScale [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Convierte el video a escala de grises (no cambia el formato de color). Sintaxis: Greyscale() FlipHorizontal / FlipVertical [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Rotan al video de tal manera que lo que se veía de izquierda-derecha pasa a verse de derecha-izquierda, en el caso del horizontal, el vertical hace lo mismo pero en vertical valga la redundancia. Dicho de otra forma el video pasa a verse como el original se vería en un espejo. Sintaxis: FlipHorizontal() FlipVertical()

Tutorial de Encodeo en Avi por lEe

  • by
Programas a utilizar: - VirtualDubMod 1.5.10 - Codec XviD - AviSynth 2.5.8 - winLAME 4 - MeGUI (Sólo utilizaremos una herramienta de este programa xD)
CREAR NUESTRO ARCHIVO AVS
Primeramente crear nuestro AVS, ya que él será nuestro intermediario entre el RAW y el “VirtualDubMod”. El AVS es un archivo de “texto” que nos permitirá poder agregar diversos filtros de estilizado, limpieza, crop y resize, etc… en nuestro AVI así poder lograr optimizar la calidad y por lo tanto conseguir la mejor calidad posible (puesto que la calidad en un AVI es limitada a su tamaño) Procuramos instalar la ultima versión del AviSynth así ahorrarnos posibles problemas de compatibilidad con filtros y demases. Después de esto lo dejaremos de lado ya que no trabajaremos directamente con el AviSynth, pues solo nos servirá en el uso del AVS. Abrimos el “Notepad” y lo guardamos automáticamente como extensión AVS (.avs), ahora ya tenemos listo nuestro archivo para poder empezar a trabajar. Exiten 2 lineas para la carga de video: - Avisource("RUTA EXACTA DEL VIDEO") - DirectShowSource("RUTA EXACTA DEL VIDEO ") Siendo la primera solo para cargar RAWs en AVI, y la segunda RAWs en MKV o MP4 (En este caso podremos correr estos formatos en el VirtualDub, ya que directamente no se puede). Y por ultimo la carga de los subtitulos, que se logra con la siguiente linea: - Textsub("RUTA EXACTA DE LOS SUB ") Pero para esto necesitaremos cargar el plugin que nos reconoce la linea antes mencionada (El plugin viene adjunto a este mismo Tutorial) Ejemplo:
[Imagen: AVS.png]
Así ya tendríamos listo nuestro AVS.
EXTRAER Y COMPRIMIR EL AUDIO
Primeramente necesitaremos extraer el audio “no comprimido” del RAW puesto que generalmente viene en formato PCM y comprimirlo con el winLAME. Para extraerlo necesitaremos del VirtualDub y nuestro AVS… Nos vamos a “File -> Open video file…”, y buscamos el AVS, o solo lo arrastramos al VirtualDub. Nos vamos a “Streams -> Stream list” y le damos a “Save WAV”
[Imagen: Save-WAV.png]
Si tenemos la casilla “Don't run this job now; add it to job control so I can run it in batch mode” marcada, sera necesario presionar el F4 para irnos al “control de trabajo” y darle a “Start” Ahora ya tenemos nuestro audio, que al no estar comprimido pesa aprox. 200MB en general para un episodio de 25 min. de duración. Cargamos el audio con el winLAME, “Next > >”, elegimos “LAME mp3 Encoder” en “Output Module” y clickeamos la casilla “Warn about lossy transcoding”, “Next > >” nuevamente y seleccionamos “VirtualDub: audio track compression, CBR at 128 kbps”, por ultimo “Next > >” y le damos al botón play.
[Imagen: winLAME.png]
Resultara un audio comprimido de poco mas de 20MB, que es el 10% de su tamaño real =O… IMPORTANTE: Para extraer el audio necesitaremos hacerlo con nuestro AVS, pues si lo hacemos directamente con el RAW, nos extraerá el audio con errores tomándolo como un audio comprimido (cuando no lo esta) y no se podrá comprimir con el winLAME.
CALCULAR NUESTRO BITRATE A USAR
Ya con el AVS y el audio a mano necesitaremos calcular nuestro bitrate, quien influye directamente con el peso y calidad del video. Primero debemos tener en mente el peso final que queremos que tenga nuestro video (Generalmente es de entre 170 a 180MB). Tomaremos lo general en anime, que es de 175MB, a lo que deberemos restarle el peso de nuestro audio 22,1MB, así nos dará 152,9MB que es lo que debe pesar el video (sin audio), ya que al encodear con el VirtualDub, unirá y sumara el video y audio, lo que al final dará el peso deseado de 175MB. Ya sabemos que nuestro bitrate debe ser equivalente a 152,9 MB. Abrimos el MeGUI , cargamos nuestro AVS en “AviSynth Script” y cerramos la vista previa. Nos vamos a “Tools -> Bitrate Calculator”, como cargamos el AVS los datos propios del video ya estarán puesto, así que solo faltaría lo de la derecha. En “Codec” seleccionamos “Xvid”, en “Container” seleccionamos “AVI”, después en “File Size” elegimos “1/4 CD (175MB)” y por ultimo clickeamos en “Average Bitrate” donde podremos aumentar y disminuir el bitrate, para que nos de el peso deseado de 152,9MB en “Video File Size”.
[Imagen: Bitrate.png]
Nos da un bitrate de 885, el cual lo deberemos agregar en el encoder del XviD, ya que vamos a comprimir el video con ese bitrate para que nos de los 152,9MB que queremos.
[Imagen: xvid.png]
La configuracion de Xvid esta en la Categoria Configuraciones exploren el foro y lo encontraran xD
UNIR AUDIO Y ENCODEAR NUESTRO AVI
Primero configurar nuestro VirtualDub como en la imagen…
[Imagen: Virtual.png]
Los 2 “Process priority” se pueden dejar como “Default”, así solo se le asignan los recursos necesarios para trabajar, mientras que en “Highest” le asigna todos los recursos disponibles del PC para trabajar, así aumenta la velocidad de proceso y trabaja con mayor eficacia. Lo malo de este modo es que no se puede hacer nada mas hasta que termine el encodeo, pues todos los recursos están designados al VirtualDub. Cargamos nuestro AVS nuevamente en el VirtualDub, nos vamos a “Streams -> Stream list” y le damos a “Disable”, así descartar el audio no comprimido, y “Add” para buscar nuestro nuevo audio. Por ultimo “OK”…
[Imagen: Audio-Nuevo.png]
Haremos 2 pasadas, así el video resultante tendrá una mejor calidad. (Primero debemos de tener el codec configurado de acuerdo al tutorial que adjunte)
PRIMERA PASADA
Nos vamos a “Video -> Compression…” y buscamos nuestro codec XviD, el cual generalmente sale como “Xvid MPEG-4 Codec” y le das a “Configure”.
[Imagen: 1ra-Pasada.png]
En “Encoding type:” seleccionaremos “Twopass - 1st pass” y “OK”. Nos vamos a “File -> Save As…” y guardamos nuestra primera pasada como “Pasada1”, sin olvidar marcar la casilla “Don't run this job now; add it to job control so I can run it in batch mode” para así procesar después las 2 pasadas juntas.
[Imagen: Guardar-pasada.png]
SEGUNDA PASADA
Volvemos a la misma pantalla donde configuramos la primera pasada y esta vez seleccionamos “Twopass – 2nd pass”, nos aseguramos que el bitrate este bien y sea el mismo que calculamos, y le damos a “OK”.
[Imagen: 2da-Pasada.png]
Guardamos nuevamente, pero esta vez como Pasada2, asegurándonos de que sea la misma ruta de la primera pasada y que este marcada la casilla antes dicha. Por ultimo nos vamos a “File -> Job control…” o solo presionamos F4, así nos aparecerá la pantalla de tareas a procesar, y las 2 pasadas ya en lista, le damos a “Start” y procesara automáticamente las 2 pasadas.
[Imagen: Job-control.png]
Esto fue todo x3, y ojala les haya servido…
Tutorial creado por lEe (Lordlee)

Soy nuevo en esto, ¿Qué formatos hay y cómo son? Timeo Basico Incluido

  • by
Bueno, pues formatos de subtítulos hay muchos, aunque los más populares son .ass, .ssa, y .srt. La mayoría de los archivos que te lleguen desde el traductor o corrector serán en .srt, pero también podría darse el caso de que fuese un archivo de texto plano (un .txt) que lo abrirás igualmente. De todos modos, el srt lleva unos tiempos que te sirven de guía que ha dejado el traductor, por lo que es el formato más popular para el timer. En cuanto a formatos de vídeo y audio que abre Aegisub, es simple: cualquiera. Cualquier códec que tengas en el PC instalado, lo recoge automáticamente de modo que puedes abrir con el programa cualquier archivo que normalmente reproduzcas. Eso hace la vida muy cómoda a veces. ¿Qué es Aegisub?. Los tiempos cambian, y con ellos los programas que usamos en esto de subtitular series. Antiguamente las opciones más viables para sincronizar subtitulos eran el SubStation Alpha y el Medusa, pero desde hace un tiempo tenemos disponible el Aegisub, un programa mucho más completo que Medusa, y por supuesto, infinitamente mejor que el obsoleto SubStation Alpha. Para bajaros el programa sólo tenéis que ir a la Web Oficial.Yo he usado la versión 1.07 / 1.09 beta para este manual, pero puede que encontréis alguna versión más moderna. Acostumbrándonos a la interfaz y preparándonos. Una vez tengas Aegisub Instalado, ejecútalo y tendrás una pantalla similar a esta:
[Imagen: aegisub_001.jpg]
Como en este tutorial lo que pretendemos es centrarnos en la función de timear, vamos a comenzar abriendo el script que queremos timear. Para ello sólo tenemos que ir a File > Open Subtitles. Ahí carga el archivo de subtítulos que tengas para timear, sea cual sea su formato.
[Imagen: aegisub_002.jpg]
Al abrirlo tendrás un script listo para timear, y una pantalla similar a la de abajo.
[Imagen: aegisub_003.jpg]
Ahora tenemos que abrir el audio, y para abrirlo no hay más que ir a Audio > Open Audio File....  Aegisub soporta muchos formatos de audio, desde wav, mp3, a ogg e incluso ac3, así que seleccionad el audio que acompañe al script que tenéis sin complicaros mucho la vida por su formato.
[Imagen: aegisub_004.jpg]
Una vez abierto el audio, pasaréis a tener una pantalla similar a la siguiente:
[Imagen: aegisub_005.jpg]
Muy bien, ahora voy a explicaros que es cada uno de los botones de la barra de Audio. Los he numerado para poner debajo una tabla con sus funciones.
[Imagen: aegisub_006.jpg]

[00] Esto es el histograma del archivo de audio abierto. En el se marcan las “zonas” que delimitarán cada frase, es decir, el inicio y el final del audio.

 [01] Te envía a la línea anterior del script, o en caso de estar timeando un karaoke, a la sílaba anterior.

[02] Te envía a la línea posterior del script, o en caso de estar timeando un karaoke, a la sílaba posterior.

[03] Reproduce la selección marcada en el histograma.

[04] Reproduce la línea seleccionada en el script.

[05] Deja de reproducir el audio.

[06] Reproduce la selección marcada en el histograma desde 500 milisegundos antes de su comienzo.

[07] Reproduce la selección marcada en el histograma junto a los 500 milisegundos inmediatamente posteriores.

[08] Reproduce los primeros 500 milisegundos de la selección.

[09] Reproduce los últimos 500 milisegundos de la selección.

[10] Reproduce el script completo, desde el inicio de la primera línea, al final de la última.

[11] Añade margen al inicio de la frase (500 milisegundos).

[12] Añade margen al final de la frase (500 milisegundos).

[13] Acepta y guarda los cambios realizados.

[14] Te lleva a la sección del histograma en la cual está el audio marcado (dónde está la línea).

[15] Cuando la casilla está activada, (en verde), hace que todas las modificaciones se guarden inmediatamente después de realizarlas (no os recomiendo esta opción).

[16] Cuando la casilla está activada, (en verde), hace que siempre que selecciones una línea en el script, el histograma se desplace a su posición sin necesidad de utilizar el botón 14.

[17] Esta casilla activada (en verde) activa el modo de timeo a lo SubStation Alpha (clic izquierdo es inicio de línea, clic derecho es fin de línea).

[18] Cambia el histograma y pasa a modo de espectrograma de audio (muy poco útil para timear, la verdad).

[19] Zoom Horizontal, hacia arriba crece, hacia abajo decrece. Cuanto más zoom apliques, más extendido estará el histograma.

[20] Zoom Vertical, hacia arriba crece, hacia abajo decrece. Cuanto más zoom apliques, mas marcadas serán las puntas del histograma.

[21] Al pulsar este botón, la línea pasa a modo karaoke, añade un {\kxx} al inicio de cada palabra, dónde xx es un tiempo aproximado.

[22] En modo karaoke, sirve para unir sílabas.

[23] Seleccionando una palabra en el cuadro de al lado, te permite separarla en sílabas (ver sección de cómo timear karaokes para más información).

[24] Tiempo en el que se inicia la línea.

[25] Tiempo en el que finaliza la línea.

[26] Duración total de la línea.

[27] Texto de la línea seleccionada actualmente.

[28] Columna de tiempos de inicio de línea.

[29] Columna de tiempos de finales de línea.

Timeo paso por paso Bueno, ahora sólo falta explicar como se timea en si. En Aegisub hay dos formas distintas de timeo, dos sistemas, que corresponden a los del viejo SubStation Alpha, y a la del Medusa. Nosotros vamos a centrarnos en la versión a lo SSA, porque es más comoda y más práctica. Procurad que el botón número 17 esté activo, es decir en verde. 1) Ponte en la primera línea del script. Verás que se queda marcada en verde.
[Imagen: aegisub_007.jpg]
2) Ahora fíjate en el gráfico de audio de arriba. Bien, pues el sistema de timeo es el siguiente: con el botón izquierdo del ratón pinchas en el gráfico de audio y verás que se queda marcada una línea roja. Ese es el INICIO de la frase en el audio. Si pinchas ahora con el botón derecho, se marca otra línea roja y entre ellas se queda marcada la zona. Esa segunda línea roja es el FINAL de la frase en el audio, y la zona marcada que hay entre ambas es el espacio de tiempo en el que esa frase va a salir en pantalla. Es decir, nuestro objetivo es que en cada frase, el audio de ésta quede encuadrado entre ambas franjas.
[Imagen: aegisub_008.jpg]
3) ¿Cómo puedes ajustar ambas franjas para que el audio quede bien encajado? Probando. Vamos a marcar el botón 16, que es “ir automáticamente al tiempo de la frase”, de modo que cada vez que cambies de línea, el programa te envíe directamente a la zona del audio que te viene marcada por el programa del traductor, que te hará de referencia. Una vez esté el tiempo de la línea “situado” (recuerda que marcando el botón 16 es automático) pulsa el botón 4, es decir el que reproduce el audio que tiene la línea guardada. Comprobarás que te sale el audio de la línea pero mal ajustado, es solo una referencia. Pues bien, pulsa con el botón izquierdo del ratón un poco más a la izquierda (es decir, pon el inicio de la frase un poco más atrás), y con el derecho amplia el margen del final, clic un poco más a la derecha, de modo que se quede marcada una zona más amplia. Tal y como se ve en la imagen siguiente.
[Imagen: aegisub_009.jpg]
4) Ahora si pulsas el botón 3 (o pulsas la tecla ‘S’) se reproduce la zona que tienes marcada en el gráfico, NO los tiempos guardados de la frase. Pues bien, fíjate en el audio y a base de ir clickando con el ratón, ve moviendo el inicio y el final y escuchando de nuevo la zona marca (con ‘S’ o con el bóton 3) hasta que la frase quede completamente ajustada , es decir, que la marca del inicio está JUSTO donde el personaje empieza a hablar, y la marca del final está JUSTO donde acaba de hablar.
[Imagen: aegisub_010.jpg]
5.) Bien, una vez tienes la frase bien “encerrada” entre ambas marcas, sólo te queda pasar a la siguiente frase, pero CUIDADO, no lo hagas con el ratón, pulsa el botón 13 y así se quedarán guardados los tiempos y pasará automáticamente a la siguiente línea. También puedes pulsar el botón ‘G’ del teclado, que hace exactamente lo mismo. Ahora ya sólo te queda repetir este proceso tantas veces como líneas tenga el script, y ya lo tienes listo. Como puedes ver es bastante simple, sólo que requiere cierto tiempo, y hasta que no tienes costumbre puede costarte bastante tiempo timear un solo episodio, pero a los 2 ó 3 episodios timeados serás ya un “profesional” del tema. 4. Consejos varios A la hora de timear hay bastantes cosas que te pueden ayudar. Aquí te pongo unas cuantas que te serán útiles: * Procura fijarte bien en el gráfico de audio, muchas veces es muy evidente dónde comienza la frase y dónde acaba. Mira el siguiente ejemplo:
[Imagen: EjemploGrafico0.jpg]
Usa la traducción para guiarte cuando creas que te has perdido. Expresiones como “arigato” o similares que seguramente te son conocidas de tanto ver anime, te ayudarán mucho para saber si en algún momento de mucho follón has colocado alguna frase mal. Si no tienes a mano el audio suelto puedes abrir el video directamente dando a Video -> Open Video... y una vez abierto este, dale a Audio -> Open Audio from Video, asi te carga el audio del episodio y no necesitas tener el audio separado. Luego puedes cerrar el video para que no te moleste a la hora de timear, que el audio seguirá cargado. Recuerda que no tienes por qué timear todo el episodio de golpe, puedes timear una parte, salvar y salir. La próxima vez que abras el .ass del timeo que estás haciendo, Aegisub te preguntará si quieres volver a cargar los archivos asociados a éste (audio, video) de modo que directamente te abrirá el audio sin necesidad de cargarlo a mano de nuevo. 5. Anotaciones finales Aparte hay gente que aún timea con SSA, y pese a que el método es el mismo que usamos aquí en el Aegisub, el programa es bastante distinto en cuanto a forma, por eso por si acaso os dejo aquí un viejo tutorial que hice para timear con SubStation Alpha para el que lo quiera. Espero que el manual os sirva de ayuda, y ya sabéis, si tenéis cualquier duda, un comentario, y les responderé para resolverlas