Articulo de referencia

AviSynth

AviSynth es un programa de servidor de tramas para Microsoft Windows , Linux y macOS, desarrollado inicialmente por Ben Rudiak-Gould, Edwin van Eggelen, Klaus Post, Richard Berg...

AviSynth es un programa de servidor de tramas para Microsoft Windows , Linux y macOS, desarrollado inicialmente por Ben Rudiak-Gould, Edwin van Eggelen, Klaus Post, Richard Berg e Ian Brabham en mayo de 2000 [ 1 ] y posteriormente adoptado y mantenido por la comunidad de código abierto, que sigue activa en la actualidad. Es software libre con licencia GNU General Public License .

Editor de vídeo con guion

AviSynth actúa como un editor de vídeo no lineal controlado completamente por scripts (sin una interfaz gráfica de usuario ). [ 2 ] Emula un archivo de vídeo AVI (o un archivo de audio WAV ) tal como lo ve la aplicación descendente VFW , que normalmente es un reproductor multimedia , un software de edición de vídeo o un codificador . [ 3 ]

AviSynth se basa en filtros , muy similares a los de DirectShow , pero con una interfaz binaria diferente . Entre sus funciones se incluyen el recorte , el desentrelazado , la telecine inversa , el procesamiento de imágenes fijas, la corrección de color básica , la reducción de ruido de vídeo y muchas otras. AviSynth también realiza tareas de edición de vídeo tradicionales , como cortar, recortar y reordenar segmentos.

Por ejemplo, consideremos el script "myAvi.avs" (simplemente un archivo de texto plano guardado con la extensión "avs").

AviSource("myAvi.avi") Recorte(0, 0, 320, 240) Desenfoque (0.1) 

Este archivo de script se puede abrir en la mayoría de los reproductores multimedia (como Windows Media Player ). El programa reproducirá el archivo de vídeo "myAvi.avi" recortado a 320 píxeles de ancho por 240 píxeles de alto en la esquina superior izquierda y ligeramente desenfocado. Las operaciones se realizan de forma secuencial: primero se recorta y luego se desenfoca.

Técnicamente, AviSynth construye un gráfico de filtros (similar a Microsoft GraphEdit , pero con capacidades adicionales) [ 4 ] , controlado por scripts escritos en el lenguaje de scripting de AviSynth . Su funcionalidad se puede ampliar mediante el uso de filtros de terceros conocidos como complementos . En AviSynth Filter Collection se mantiene una lista de complementos externos .

AviSynth es un servidor de fotogramas : el programa que realiza la llamada solicita fotogramas de audio/vídeo y el script los proporciona . El programa puede solicitar los fotogramas en cualquier orden, lo que le permite pausar, avanzar o retroceder, etc., al igual que con un archivo físico.

Lenguaje de scripting AviSynth

El lenguaje de scripting es un lenguaje de flujo de datos : [ 4 ] un paradigma de programación que describe un grafo dirigido de los datos que fluyen entre operaciones. Carece de algunas estructuras de control de programación procedimental , [ 5 ] pero contiene muchas características familiares para los programadores, incluidas variables , distintos tipos de datos , condicionales y expresiones complejas .

El lenguaje trabaja principalmente con el clip de audio/video como un tipo de dato integrado. El clip es una estructura compleja con muchos atributos, como ancho, alto y duración. [ 6 ] El lenguaje también cuenta con otros tipos de datos más estándar: int , float , bool y string . [ 7 ] Estos se pueden usar para realizar cálculos, tomar decisiones y escribir texto, como subtítulos , en el video.

El script tiene un único valor de retorno , que es el audio y el vídeo que recibe el programa que ejecuta el script. Normalmente, esta es la última línea del script, pero se puede insertar una instrucción de retorno en cualquier punto.

"Hola Mundo"

Este ejemplo es un programa "Hola Mundo" .

BlankClip() Subtítulo("¡Hola, mundo!") 

Si el texto anterior se introduce en un archivo de texto con la extensión .avs, se puede abrir en Windows Media Player o en cualquiera de los otros programas de la lista que aparece a continuación , y se mostrará un vídeo que contiene las palabras "¡Hola, mundo!".

La función BlankClip crea un nuevo vídeo. Los paréntesis al final de la palabra son opcionales, ya que no se pasan argumentos, pero en este caso se incluyen para indicar que se trata de una función y no de una variable.

La función de subtítulos dibuja las palabras "¡Hola, mundo!" sobre el vídeo en blanco creado previamente.

Aunque ambas funciones aceptan muchos más argumentos (por ejemplo, controlar el tamaño y la duración del vídeo en blanco, así como la posición, la fuente y el color del subtítulo), este ejemplo los omite; las funciones utilizan argumentos predeterminados integrados.

Avisynth utiliza azúcar sintáctico que hace que escribir scripts simples sea mucho más fácil: una variable implícita llamada Last . Sin variables implícitas, el script anterior tendría que escribirse así:

Último = BlankClip() Last = Last.Subtitle("¡Hola, mundo!") regresar Último 

o así:

A = BlankClip() B = A.Subtítulo("¡Hola, mundo!") devolver B 

Las variables de clip explícitas normalmente solo se utilizan para funciones que involucran más de un clip:

A = BlankClip() B = A.Subtítulo("¡Hola, mundo!") return Dissolve(A, B, 30) # Fundido cruzado de 30 fotogramas 

Procesamiento de vídeo

Este ejemplo toma un vídeo real, le aplica un procesamiento sencillo y lo devuelve como resultado.

AviSource("C:\Example.avi") ReducirPor2() Escala de grises() 

La función AviSource se utiliza para cargar un vídeo AVI desde una ubicación real. Para abrir otros tipos de medios, se puede usar la función DirectShowSource . ReduceBy2 divide el tamaño vertical y horizontal del vídeo a la mitad, y GreyScale elimina toda la información de color.

Los filtros AviSynth funcionan en muchos espacios de color RGB y YUV para permitir todo tipo de entrada y salida de vídeo. [ 8 ] Algunas funciones solo funcionan en espacios de color específicos , lo que requiere conversión ; por ejemplo, la mayoría de los vídeos se distribuyen en un espacio de color YUV , pero la mayor parte de la corrección de color se realiza en uno de los espacios RGB . Un script de corrección de color podría tener este aspecto:

DirectShowSource("movie.mp4") # Espacio de color YV12 Convertir a RGB32 RGBAdjust(1.0, 0.95, 1.0) # disminuir el canal verde Convertir a YV12 

Definido por el usuario

El lenguaje de scripting AviSynth permite a los usuarios definir sus propias funciones.

Este es un ejemplo de una función que permite realizar una transición fluida entre dos clips sin dañar las líneas de entrelazado.

 clip1 = AVISource("video1.avi") clip2 = AVISource("video2.avi") # Llama a la función definida por el usuario que se define a continuación: entrelazado_disolución(clip1, clip2, 30) # ...el script devuelve el resultado anterior al programa que lo llamó. # Función definida por el usuario: # Transición del clip1 al clip2 en 30 fotogramas función entrelazada_disolver(clip clip1, clip clip2, int iter) { clip1 = clip1.CamposSeparados evn1 = clip1.SelectEven odd1 = clip1.SelectOdd clip2 = clip2.CamposSeparados evn2 = clip2.SelectEven odd2 = clip2.SelectOdd evn = Disolver(evn1, evn2, iter) impar = Dissolver(impar1, impar2, iterador) Intercalar(par, impar).Tejer.TejerDoble.SeleccionarImpar # ...la función devuelve el resultado anterior al script principal. } 

AviSynth 3.0 y AviSynth+

AviSynth 3.0 fue una reescritura completa de AviSynth 2.x y tuvo como objetivo superar las limitaciones de esta última. Se añadieron mejoras como un modelo de espacio de color abstracto , en el que se podían admitir nuevos espacios de color (incluidos dos con una profundidad de 45 bits) mediante un mecanismo de complementos, una mejor gestión de la caché para un mejor rendimiento y el uso de Ruby en lugar del lenguaje propio empleado en las versiones actuales. [ 9 ]

AviSynth 3.0 iba a estar disponible para otros sistemas operativos además de Windows , basándose en GStreamer y extendiendo la compatibilidad a plataformas como Linux , Mac OS X y BSD . El desarrollo se ha estancado desde agosto de 2007. [ 9 ] [ 10 ]

AviSynth+ es una bifurcación de la versión oficial AviSynth 2.xx, que introduce características muy esperadas como compatibilidad con 64 bits , multihilo , espacios de color profundos , compatibilidad con compiladores recientes, nuevas estructuras de scripting (nuevas estructuras de control de flujo como bucles) y un mayor rendimiento en muchas áreas. [ 11 ] Al mismo tiempo, conserva una compatibilidad del 100 % con la serie AviSynth 2.5/2.6, tanto para filtros como para aplicaciones anfitrionas. En el momento de escribir este texto (junio de 2023), también se mantiene activamente.

AviSynth para sistemas operativos que no son Windows

AviSynth 2.xx puede utilizarse en sistemas operativos distintos de Windows mediante Wine . Para trabajar con scripts, se puede usar VirtualDub /VirtualDubMod, al igual que en Windows. Para establecer una interfaz entre AviSynth en Wine y, por ejemplo , FFmpeg ejecutándose en un host Linux, se puede usar Avs2YUV . Avs2YUV es un programa de línea de comandos de Windows que se ejecuta en Wine y genera la salida de un script de AviSynth en la salida estándar , que luego se redirige a FFmpeg. Avs2YUV también admite la escritura en una tubería con nombre . [ 12 ]

Existe una versión de AviSynth para Linux llamada AvxSynth. [ 13 ]

Programas compatibles con AviSynth

Además, se han creado varios programas que solo aceptan scripts de AviSynth como entrada, lo que simplifica los propios programas pero ofrece a los usuarios toda la potencia de AviSynth para la entrada de datos.

También existen varias aplicaciones de codificación por lotes que combinan AviSynth con codificadores y multiplexores de audio y vídeo de línea de comandos para ofrecer una aplicación de codificación de vídeo modular, personalizable y todo en uno. MeGUI es un ejemplo de este tipo de aplicación.

Aunque los scripts de AviSynth están diseñados para abrirse fácilmente con programas de edición de texto sencillos, existen varios editores específicos para editar scripts de AviSynth, como AvsPMod .

Véase también

Referencias

  1. "Derechos de autor de AviSynth" . AviSynth Mediawiki . Equipo de AviSynth . Consultado el 11 de septiembre de 2015 .
  2. «Página Principal - Avisynth» . AviSynth Mediawiki . Equipo AviSynth . Consultado el 10 de abril de 2013 .
  3. "Más sobre AviSynth - AviSynth" . Wiki de AviSynth . Equipo de AviSynth . Consultado el 10 de abril de 2013 .
  4. 1 2 "El modelo de ejecución de scripts: el gráfico de filtros" . AviSynth Wiki . Equipo de AviSynth . Consultado el 25 de octubre de 2019 .
  5. "Sintaxis de AviSynth: estructuras de control" . Wiki de AviSynth . Equipo de AviSynth . Consultado el 21 de septiembre de 2014 .
  6. "Propiedades del clip" . Wiki de AviSynth . Equipo de AviSynth . Consultado el 27 de octubre de 2019 .
  7. "Variables de script" . Wiki de AviSynth . Equipo de AviSynth . Consultado el 14 de septiembre de 2017 .
  8. "Convertir - Avisynth" . Wiki de AviSynth . Equipo de AviSynth . Consultado el 27 de octubre de 2019 .
  9. 1 2 "Avisynth 3 - ¿proyecto muerto?" . Foro de Doom9 . Consultado el 17 de junio de 2009 .
  10. «AviSynth v3» . AviSynth Mediawiki . Consultado el 22 de septiembre de 2019 .
  11. "AviSynth+" . AviSynth Mediawiki . Consultado el 22 de septiembre de 2019 .
  12. "Avs2YUV" . Akuvian.org . Consultado el 9 de enero de 2011 .
  13. "avxsynth/avxsynth: Puerto de Avisynth para Linux" . GitHub . Consultado el 16 de septiembre de 2017 .
  14. "SourceForge.net: VirtualDubMod: Errores" . Consultado el 3 de diciembre de 2009 .
  • Página principal de AviSynth: (inglés) (japonés)
  • Colección de filtros AviSynth
  • Foros de AviSynth de Doom9
  • Página principal de desarrollo de AviSynth 3.0
Obtenido de " https://en.wikipedia.org/w/index.php?title=AviSynth&oldid=1352724411 "