Você está na página 1de 9

Gua Avisynth parte 1

Bueno, comienzo ya con este blog como lo haba dicho antes, me tratar de enfocar slo en el encoding, y si me queda tiempo libre, algo del AE. Y bueno, lo que van a ver ahorita es bsicamente un copy-paste de las guas que hay por la net, una especie de recompilacin, ligeramente alterada por mis conocimientos xDD. Introduccin Avisynth es un programa libre y gratuito destinado a realizar frameserver. Su finalidad es la decodificacin de casi cualquier formato existente y la posterior aplicacin 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, tambin llamado script, el cual puede ser creado con el notepad o similares, y debe ser guardado con extensin AVS. En dicho texto se deben indicar los parmetros de decodificacin y que filtros se aplicaran. Durante la instalacin se les preguntara si desean instalar algunos extras, como por ejemplo la opcin de asociar a Avisynth los archivos de extensin AVS ("Associate AVS with Notepad"), recomendable activarla para as identificar facilmente los script. Y tambin "Add Avisynth Script to new items men", que les permite acceder a ClickDerecho->Nuevo->AviSynth Script para as crear ya automticamente un archivo con extensin 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 Bsico Comencemos con los comandos para cargar un video, es decir los primeros que deben ir en el script, despus 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 (slo 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 lnea, que hace uso del DirectShow y as permite demultiplexar/decodificar todo formato que posea un CODEC directshow adecuado instalado en el sistema, as como tambin 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 slo es necesario en ciertos casos de decoders directshow que fallan en informarlo, como cuando se trata de achivos ASF.

Si desean slo 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 lnea cundo 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 vern 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 ms adelante. Filtro Resize [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] El primero que trataremos es quizs el ms utilizado en la recompresin de videos, se trata del filtro Resize; avisynth nos ofrece unas cuantas variantes, donde las ms 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 resolucin del video, para as estirarlo o comprimirlo (espacialmente hablando) lo necesario hasta alcanzar la resolucin 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 ms chica posible es el pixel. Explicacin 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 resolucin. 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 resolucin, ya que se logra una imagen ms ntida, pero slo es recomendable cuando habr suficiente bitrate como para codificar dicho detalle extra, sino puede ser ms 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 ms arriba. Estos parmetros 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 aparicin de macrobloques al comprimir a muy bajos bitrates; mientras que el ringing hace todo lo contrario, a mayores valores ms fino ser el filtro y ms detalle dejar pasar. Con b=0 y c=0.75 el filtro es idntico al presente en VirtualDub, "VirtualDub`s Precise Bicubic". Un valor normal sera 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 estara generando ms 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 an ms detalle y con mejor calidad que el Bicubic, slo recomendable para altos bitrates. Sirve como alternativa al Bicubic con valores de c entre 0,6 y 0,75, slo que logra una calidad superior en estos valores (menos artifacts). Lanczos4: es una abreviacin a LanczosResize(taps=4). (Desarrollo pendiente). BlackMan: sta es una modificacin del Lanczos que permite lograr menos artifacts (errores) con valores de taps altos. Gauss: filtro basado en el algoritmo de Gauss. El parmetro "p" ajusta la nitidez, desde 0 (menor detalle, mas borroso) hasta 100 (mayor detalle, ms fino). Su velocidad es similar al Lanczos4. Point: es el filtro para resize ms simple que existe. Su uso no es para nada recomendable a no ser que se quiera disminuir la calidad del vdeo adrede. Sus resultados suelen contener mucho bloque. SplineXX: este filtro tiene como objetivo alcanzar un mximo nivel de detalle, con menos artifacts a raz del mismo que si se usara Lanczos. XX puede valor 16, 36 y 64, cuanto mayor este valor mayor nitidez de lograra. Para una comparacin entre filtros de resize pueden ver aqui (ingls) Desde la versin 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 lnea: Crop(10, 10, 200, 300).BilinearResize(100, 150) Seria casi lo mismo que usar la siguiente: BilinearResize(100, 150, 10, 10, 200, 300) Este mtodo es conveniente usarlo cuando quieren cortar parte de la imagen previa a su reescalado. Usndolo 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 tamao (espacial) de un vdeo con slo redimensionar dado que las resoluciones que se deben obtener son fijas para cumplir algn estndar, entonces con

slo dimensionar se daara el aspect ratio (AR) del mismo y ste se vera alargado o achatado; as que para llegar a la resolucin 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 algn 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 mrgenes. Las letras siguen el siguiente orden: "x": superior; "z": inferior; "v": izquierda; "y": derecha. Lo ms comn es agregar bandas arriba y abajo, pero tambin se agregan en los cuatro lados por ejemplo cuando se desea solucionar el efecto overscan. El parmetro "color" permite elegir un color distinto del negro (default, si no se especifica nada); este color lo deben indicar en cdigo hexadecimal. Aqu pueden ver una lista con los cdigos y colores soportados. Ejemplo: AddBorders(0,64,0,64,$00FFFF) Esta lnea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nada ms . 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" lneas de la parte inferior de la imagen, especialmente til para eliminar la distorsin 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 aparicin de bloques o pixelado, o tambin para facilitar la codificacin 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. Segn 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. Tambin 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 ms efectivo. El Spatial slo funciona en el espacio de color YUY2, as que si desean implementarlo y tienen como origen un formato distinto debern convertirlo, lo cual ser explicado en otro filtro prximamente. 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 cmo influyen estos valores debern 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 sern cuantos frames adyacentes), cuanto mayor sea mejor se desempeara el mismo, pero ms 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 slo se procesan si ambos superan el lmite. El valor "modo" por default es 1, pero puede setearse a 2 para aprovechar un mejor desempeo del filtro temporal (mejor calidad y mayor velocidad) agregado en la versin 2.56 de avisynth. Y por ltimo "escena" permite fijar un valor lmite para no procesar imgenes 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 opcin requiere un procesador que soporte instrucciones ISSE. Ejemplo de un buen punto de partida (extrado de la wiki): TemporalSoften(4,4,8,15,2) Tweak [YUY2-Y8-YV411-YV12-YV16-YV24]

Con l podremos regular a gusto contraste, brillo, saturacin y color. Es sumamente til y nos permitir lograr algn 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): tie 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 saturacin del color, este vendra 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 variacin, valores inferiores lo bajan, valores mayores lo aumentan. "luma"(opcional, true / false, default=true): true refleja el comportamiento de versiones anteriores de avisynth, bsicamente lo que hace cuando esta activado es limitar la luminancia a [16,235], no me pregunten exactamente cul 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 basndose en el color para el cual se aplicaran los valores de color y saturacin 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 basndose en la saturacin del color para el cual se aplicaran los valores de color y saturacin. Para RGB el valor mximo 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 interpolacin, til por ejemplo cuando el video se compone nicamente de colores uniformes. Pueden ver algunos ejemplos de aplicacin 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 reproduccin sin modificar el conteo de frames (causando que el video se reproduzca ms rpido o ms lento de lo normal). nicamente setea el parmetro FPS. Si en "syncaudio" colocamos true (false por default) tambin modificara el sample rate del audio para igualar la duracin del video. Esto tambin constituye un metodo para modificar unicamente el sample rate del audio.

"fps" es un numero real, aunque es ms conveniente cuando se trata de NTSC utilizar la relacin 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 relacin, entonces siendo 23.976 y 29.97 resultados aproximados de las relaciones ya mencionadas en la realidad cuando avisynth los pase no dar la relacin estndar exacta. Tambin pueden valerse de presets ya existentes para elegir los FPS segn los estndares, mediante el valor "preset", y segn los mencionados en la tabla de esta pgina. 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 tambin 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 parmetros y su funcin son los mismos que AssumeFPS, as que pueden guiarse con dicha descripcin. Reverse [RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24] Simple, se ocupa de que el video sea reproducido al revs, de atrs 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 tambin 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 slo soporta algunos formatos especficos o uno solo en particular, como por ejemplo el filtro SpatialSoften, que slo soporta trabajar sobre YUY2. Tambin en el caso de que el codificador a donde envan 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 analgica(16,235) y los PC procesan el rango de color completo (0,255). Segn la informacin en la wiki Rec.601 debe ser usado cuando la fuente es XviD/DivX o capturas analgicas; 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 resolucin entre los formatos de color que se estn 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 vea 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 vera en un espejo. Sintaxis: FlipHorizontal() FlipVertical() Y mmm, so es todo por hoy, maana la parte 2 en la que se explicarn algunos filtros externos (los ms conocidos), cmo insertarlos, orden de los filtros, y algunos ejemplos prcticos, y de dnde puedes descargarlos.

Você também pode gostar