Extracts frames from a video using fluent-ffmpeg.
npm install --save ffmpeg-extract-frames
# or
yarn add ffmpeg-extract-frames
const extractFrames = require('ffmpeg-extract-frames')
// extract 3 frames at 1s, 2s, and 3.5s respectively
await extractFrames({
input: 'media/1.mp4',
output: './screenshot-%i.jpg',
offsets: [
1000,
2000,
3500
]
})
// generated screenshots:
// ./screenshot-1.jpg
// ./screenshot-2.jpg
// ./screenshot-3.jpg
// default behavior is to extract all frames
await extractFrames({
input: 'media/1.mp4',
output: './frame-%d.png'
})
// generated screenshots:
// ./frame-1.png
// ./frame-2.png
// ...
// ./frame-100.png
Extracts one or more frames from a video file. Returns a Promise
for when all frames have been written.
There are several options for specifying which frames to extract, namely timestamps
, offsets
, fps
, and numFrames
. The default behavior if you don't specify any of these options is to extract all frames from the input.
Type: String
Required
Path or URL to a video file.
Type: String
Required
Output file pattern.
Note that for timestamps
or offsets
, the pattern should include a %i
or %s
(details).
For any other call, you should use the %d
format specifier. I know this is confusing, but it's how fluent-ffmpeg works under the hood.
Type: Array<Number>
Array of seek offsets to take the screenshot from in milliseconds.
Type: Array<Number|String>
Same as fluent-ffmpeg's screenshots.timestamps.
Type: Number
Frames per second to output.
Type: Number
Output a specific number of frames. The input video's frames will be skipped such that only this number of frames are output.
Type: Function
Default: noop
Optional function to log the underlying ffmpeg command (like console.log
).
Type: String
Specify a path for the ffmpeg binary.
- ffmpeg-extract-frame - Extracts a single frame from a video.
- ffmpeg-generate-video-preview - Generates an attractive image strip or GIF preview from a video.
- gif-extract-frames - Analogous module for extracting frames from GIF files.
- fluent-ffmpeg - A fluent API to FFmpeg.
- awesome-ffmpeg - A curated list of awesome ffmpeg resources with a focus on JavaScript.
MIT © Travis Fischer
Support my OSS work by following me on twitter