VapourSynth 101 – Parte 2: Creando nuestro primer vpy

VapourSynth 101 – Parte 2: Creando nuestro primer vpy

Seguimos con la segunda parte de “VapourSynth 101”, un tutorial rápido de cómo usar VapourSynth, pensado más que nada para aquellos que venimos de AviSynth y somos algo reticentes al cambio. Ya verán que el cambio a VS es bastante bueno, solo hay que dejar algunas costumbres atrás.

Si esta es la primera entrada del tutorial que leen, les recomiendo que lean VapourSynth 101 – Parte 1: ¿Por qué y cómo instalar VapourSynth?, puesto que allí explico cómo instalar VapourSynth, sus dependencias y cómo modificar nuestro Windows para su uso a nivel global.

Esta parte 2 se compondrá de dos puntos:

  • Utilizar VSRepo
  • Crear nuestro primer script

¿Por qué VSRepo? El VapourSynth que hemos instalado está “a pelo”, es decir, que tiene los componentes básicos, pero requeriremos unos cuantos plugins más, como un buen proveedor de video. Y VSRepo nos ayudará en la instalación de dichos plugins en vez de buscar por toda la red.

VSRepo se puede descargar desde su GitHub o desde su tema oficial en Doom9. Los requisitos son mínimos, ya teniendo instalado Python, solo requeriremos instalar 7-Zip y añadir C:\Program Files\7-Zip al PATH (los pasos son similares a los que se hicieron en la primera parte del tutorial).

Abrimos cmd o PowerShell en el directorio vsrepo y empecemos a jugar.

  • python vsrepo.py nos dará todas las opciones a utilizar.
  • python vsrepo.py available nos dará el listado de todos los plugins que están disponibles a través de este repositorio.
  • python vsrepo.py install <namespace> instalará el plugin que hemos encontrado en available.

Existen varios proveedores de video que podemos utilizar, entre ellos d2vsource, ffms2 y L-SMASH-Works. Para este tutorial instalaremos ffms2. Para ello ejecutaremos el siguiente comando:

python vsrepo.py install ffms2

Ahora abrimos VapourSynth Editor, se nos creará un script preformateado similar a la imagen a continuación. No borraremos nada de dicho script.

Crearemos un nodo llamado “video” (o el nombre de su preferencia), ahí llamaremos a algún video que tengamos existente. En mi caso, puede quedar así:

video = core.ffms2.Source(r"C:\Users\Gargadon\Videos\[USP] Future Card Buddyfight Ace - 27 [ABC47B0E].mkv")

Es muy importante que, al momento de llamar a una ruta relativa o absoluta de video, utilicemos una r antes de la ruta. De esa manera, los \ no serán interpretados por Python como escapes.

Hemos llamado a nuestro video, ahora es momento de visualizarlo. Vamos a añadir la siguiente línea donde le diremos al nodo “video”, que saque la salida.

video.set_output()

Si oprimimos la tecla F5, y nuestro script no tiene ningún error, el video se visualizará.

Una diferencia importante con respecto a AviSynth, es que VapourSynth requiere a fuerza el nodo al cual se le aplicará el filtro deseado. Un ejemplo puede ser un Spline36 a 848×480. Esta línea la podemos añadir justo antes del set_output():

video = core.resize.Spline36(848,480)

Esa línea nos arrojará un error, puesto que VapourSynth está esperando un parámetro más, ese parámetro lo llamaremos “clip”, y es el clip al cual se le va a aplicar dicho filtro.

Corrijamos esa línea, añadiendo el parámetro “clip” con el nombre del nodo “video”. Esto quiere decir que queremos que a “video” se le aplique Spline36:

video = core.resize.Spline36(video,848,480)

Ahora podemos notar que se ha aplicado el filtro.

La documentación oficial nos da una lista de plugins y funciones ya incluidas en nuestra instalación, así como programas y plugins que podemos añadir. Es una enorme cantidad de documentación, así que vayan dándose un tiempo para ir leyéndola.

Podemos guardar nuestro script sin ningún problema. Supondré que la mayoría de ustedes provienen de AviSynth, por lo que no les será muy difícil adaptarse a utilizar los plugins de VapourSynth.

¿Qué les gustaría que explicara en la parte 3? Estoy abierto a todas sus sugerencias que pueden dejar en los comentarios.

PD: Si preguntan cómo quedó mi script, es más o menos así:

import vapoursynth as vs
core = vs.get_core()
video = core.ffms2.Source(r"C:\Users\Gargadon\Videos\[USP] Future Card Buddyfight Ace - 27 [ABC47B0E].mkv")
video = core.resize.Spline36(video,848,480)
video.set_output()

Gargadon

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: