Combine multiple image buffer frames into a video file
MIT License
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 lowerAll of the above are optional.
video.frame()
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())
video.ready()
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.