/node-mlt

A library for building mlt xml documents in nodejs

Primary LanguageJavaScript

Node MLT

This module will generate the XML-based instructions needed to power a Media Lovin' Toolkit trascoded video, including audio overlays, transitions, picture slides, and watermarks.

Examples

See the examples folder for example applications using the library. The library's main demo can take a Flickr playlist, download the imges, play them in a simple slideshow, and adding a random music file if provided.

Requirements: wget, ffmpeg, melt, (libx264 if you use default configuration) You must also create examples/config.js with your flickr apikey and ffmpeg options (see examples/config.examples.js)

Api

MLT xml object

var MLT = require('node-mlt');

var mlt = new MLT
console.log(mlt.toString());
//<?xml version="1.0" encoding="utf-8"?><mlt/>
console.log(mlt.toString({pretty: true}));
// <?xml version="1.0" encoding="utf-8"?>
//
//<mlt/>
//

Add producers to your MLT document

music = new MLT.Producer.Audio({source: '/home/jeffrey/Downloads/crazy.mp3'});
mlt.push(music);

image = new MLT.Producer.Image({source: '/home/jeffrey/Desktop/dachshund.jpg'});
mlt.push(image);

Create affine filter

var affine = new MLT.Filter.Affine
affine.geometry([
  {
    frame: 0,
    x: 0,
    y: 0,
    w: 1,
    h: 1,
    sat: 100
  },
  {
    frame: 999,
    x: 480,
    y: 640,
    w: 480,
    h: 640,
    sat: 100
  } 
]);

Create a watermark filter

var watermark = new MLT.Filter.Watermark({resource: '/home/jeffrey/Desktop/signature.jpg'});

Create an audio-gain filter

var fadeIn = new MLT.Filter.AudioFade({
  start: 0,
  length: 100,
  startVol: 0,
  endVol: 1
});

Create a Frei0r blur filter

var frei0r = new MLT.Filter.Frei0r
frei0r.squareblur([
  {
    frame: 0,
    size: 0.05
  },
  {
    frame: 22,
    size: 0
  }
]);

Add producers to a playlist with filters

var playlist = new MLT.Playlist;

playlist.entry({producer: music, filters: [fadeIn], length: 1000); //length is in frames
mlt.push(playlist);

Add a playlist to a track

var track = new MLT.Multitrack.Track(playlist);

Add a track to a multitrack

var multitrack = new MLT.Multitrack;
multitrack.addTrack(track);

Add a multitrack to a tractor

var tractor = new MLT.Tractor;
tractor.push(multitrack);
mlt.push(tractor);