VapourSynth

VapourSynth

Python scripted video processing

Description

Cut a video in a GUI and the parameters end up scattered across eight panels, so swapping the source file means clicking through all of it again. Write AviSynth scripts instead and you inherit single-threaded processing and a language that exists nowhere else. VapourSynth puts the whole pipeline inside Python: a .vpy file is ordinary Python, with variables, loops, functions and conditionals, and changing a parameter is changing one assignment.

A script reads the way you would expect. Import core from vapoursynth, pull the file in through a source plugin such as BestSource to get a clip, chain filters onto it, then call clip.set_output(). Every step is explicit, so the chain is visible, and when something breaks you get a Python traceback rather than a vague failure.

Features



The script is the program: your pipeline lives in a .vpy file written in real Python. Batch a whole directory, branch to different filters by resolution, wrap a favourite chain in a function and reuse it — all of it is just programming, with no waiting on the author to add a feature.

Multithreaded by default: the core is C++ with frame-level parallelism, so a many-core machine is busy without any concurrency setup on your side.

Audio works the same way: an audio track is a clip too. Read it with BestSource, chain AudioGain onto it, call set_output — identical syntax to the video path.

A deep plugin ecosystem: deinterlacing, denoising, upscaling, colour work, subtitle burn-in — community plugins cover most of what encoding and restoration need, and installing one adds a method on core.

GPU support since R80: heavy filters can run on the graphics card through Vulkan 1.4 instead of grinding the CPU. On Linux the driver requirement is looser than you would guess; cards close to ten years old can qualify.

Cross platform and open source: the same script runs on Windows, macOS and Linux, so moving machines does not mean rewriting anything.