stopmotion

Combine multiple image buffer frames into a video file

stopmotion

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

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')
 
fs.createReadStream('frame-001.gif')
  .pipe(video.frame())

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-001.gif'
, 'frame-002.gif'
, 'frame-003.gif'
, 'frame-004.gif'
, 'frame-005.gif'
, 'frame-006.gif'
].forEach(function(filename) {
  fs.createReadStream(filename)
    .pipe(video.frame())
})
 
video.ready().pipe(
  fs.createWriteStream('frames.webm')
)

MIT. See LICENSE.md for details.