node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


stopmotion Flattr this!experimental

Uses ffmpeg multiple image buffer frames into a video file. Note that you'll need it installed on your system to get this working.



video = require('stopmotion')([options])

Creates a video instance, which accepts the following options:

  • width: the final width of the video.
  • height: the final height of the video.
  • format: the output's container format, e.g. avi. Defaults to webm.
  • inCodec: the input image codec, e.g. png. Defaults to gif.
  • outCodec: the output video codec. Defaults to libvpx
  • crf: the constant rate factor. The lower this is, the better the output quality. Defaults to 23.

All of the above are optional.


Creates a writeable stream for you to pipe a single frame buffer to. Note that it should match the video's format option. Frames will be ordered by when you created their stream.

var video = require('stopmotion')()
var fs = require('fs')


Once you've created all of your frames, use this method to encode the final result and get it back as a readable stream.

var video = require('stopmotion')()
var fs = require('fs')
, 'frame-002.gif'
, 'frame-003.gif'
, 'frame-004.gif'
, 'frame-005.gif'
, 'frame-006.gif'
].forEach(function(filename) {


MIT. See for details.