Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 2.79 KB

README.md

File metadata and controls

83 lines (61 loc) · 2.79 KB

vs-wobbly

PyPI - Python Version PyPI GitHub commits since tagged version PyPI - License Discord

A collection of VapourSynth functions for parsing and filtering wobbly files. Full information on how every function works, as well as a list of dependencies and links, can be found in the docstrings of each function and class. For further support, drop by #dev in the JET Discord server.

How to install

Install vswobbly with the following command:

pip install vswobbly

How to use

Simplest way to use it is to pass a wobbly file (.wob) to WobblyProcessor.from_file(), followed by calling apply().

from vswobbly import WobblyProcessor,

wob = WobblyProcessor.from_file('C:/path/to/wobbly.wob')
clip = wob.apply()

If you only need the parsed wobbly data, you can use WobblyParser.from_file():

from vswobbly import WobblyParser

wob = WobblyParser.from_file('C:/path/to/wobbly.wob')

This will return a WobblyParser data class, containing all the relevant data for video processing. Note that metadata, information about wobbly's UI, and wibbly parameters are currently excluded.

Strategies

Different "strategies" can be passed to WobblyProcessor to change how certain problems are handled internally. This package comes with a handful included.

For example, automatically handling combed frames with vinverse:

from vswobbly import WobblyProcessor, DecombVinverseStrategy

wob = WobblyProcessor.from_file(
    'C:/path/to/wobbly.wob',
    strategies=[DecombVinverseStrategy()]
)

clip = wob.apply()

Which would then run the DecombVinverseStrategy strategy on all combed frames.

This is written to be really flexible, and allow users to handle these problems however they see fit. To implement your own strategy, create a class and inherit from AbstractProcessingStrategy. Refer to the existing strategies and the docstrings of the abstract class for examples.

Note: For orphan field handling to be handled correctly, the strategy must have 'Orphan' in its name.