Avisynth bindings for NodeJS with a strong focus on ease-of-use.
A node module that you can use to process videos, images and sound with Avisynth, in a self-contained package.
- No dependencies
- Top code quality
- 100% code coverage for all files down to branches and statements
It currently only works in Windows (like Avisynth itself), but it may be possible, in theory, to add Linux support via Wine.
npm install -g avisynth
It can be used both by scripts as well as from command line (also not requiring Avisynth to be installed, and possibly helpful for shell scripts in other languages).
var avisynth = require('avisynth');
var script = new avisynth.Script(); // Omitting "new" is also ok
script.code = 'Version()'; // Can also be passed to the constructor
script.sharpen(1); // Direct plugin and built-in calls
script.renderFrame('foo.png', function(err) { // Time offset optional.
console.log(err || 'foo.png saved!'); // Easy frame rendering.
});
script.run(function(err) {}); // Runs the script (with no output).
script.lint(function(err) {}); // Validates the Avisynth code.
// Still planning on adding more API, specifically video encoding.
avisynth-js info path/to/script.avs # Returns video info as JSON
avisynth-js lint path/to/script.avs # Validates a script, also JSON
Sample output for info
:
{
"width": 1280,
"height": 720,
"ratio": "16:9",
"fps": 29.97,
"fpsFraction": "30000/1001",
"videoTime": 3600,
"frameCount": 107892,
"colorspace": "YV12",
"bitsPerPixel": 12,
"interlaceType": "field-based",
"fieldOrder": "TFF",
"channels": 2,
"bitsPerSample": 32,
"sampleType": "float",
"audioTime": 3600,
"samplingRate": 48000,
"sampleCount": 172799827,
"blockSize": 8
}
At the moment I'm working on a Wiki so soon there'll be docs there.