video-frames v1.0.18
video-frames
Client-side video frames extraction as base64 encoded images.
:warning: Doesn't work in Safari on iOS
From Apple Developer Documentation,
The image object can be an
imgelement, acanvaselement, or avideoelement. Use of thevideoelement is not supported in Safari on iOS, however.
Installation
npm
npm install video-framesCDN
<script src="https://cdn.jsdelivr.net/npm/video-frames@1/dist/videoframes.umd.min.js"></script>or
<script src="https://unpkg.com/video-frames@1"></script>Usage
const videoFrames = require('video-frames');
videoFrames({
// Big Buck Bunny (1080p 60fps)
url: 'http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4',
// Extract 10 evenly spaced (time-wise) frames
count: 10
}).then((frames) => {
// frames is an array of objects
// [
// {
// offset: (timestamp in seconds)
// image: (base64 encoded image)
// },
// ...
// ]
});API
videoFrames(options)
Returns a Promise for when all frames have been extracted. There are a few properties that can be set in options.
options
url(required)Default value: empty
The URL (self, remote [an
Access-Control-Allow-Originheader must be present in case of a remote URL], or blob) of the source video from which the frames are to be extracted. Since thevideoelement is used in the extraction process, the allowed formats are the ones that are playable in it. You can search for the supported formats on caniuse.com/?search=video%20formatwidthDefault value: `128` Width of the extracted frames in pixels.If no value for
widthis set, but a value forheightis set, then thewidthwill be calculated using the video dimensions.heightDefault value: `auto` Height of the extracted frames in pixels.If not set,
heightis calculated automatically from the value ofwidthusing the video dimensions.formatDefault value: `image/png` MIME type of the extracted frames.Since the
canvaselement is used for drawing the frames andtoDataURL(format)is used for reading them as base64 encoded images, the allowed MIME types are the ones that are supported bytoDataURL.From [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL#parameters), > **`toDataURL(type)`** > > ... > > **`type`** > > A string indicating the image format. The default type is `image/png`; this image format will be also used if the specified type is not supported. So, if a type is not supported, it will fall back to `image/png`.startTimeDefault value: `0` Start timestamp (in seconds) of the range from where the frames are to be extracted.It will be ignored if a valid value for
offsetsis set.endTimeDefault value: *Video Duration* End timestamp (in seconds) of the range from where the frames are to be extracted.It will be ignored if a valid value for
offsetsis set.countDefault value: `1` Number of frames to be extracted from the range set by `startTime` and `endTime`.The frames are extracted from evenly spaced timestamps across the range. It will be ignored if a valid value for
offsetsis set.offsetsDefault value: `[]` Array of timestamps (in seconds) to extract frames at.If a valid value for
offsetsis set,startTime,endTime, andcountare ignored.onLoadDefault value:
falseFunction to be called when the source video has loaded and the extraction process has started.
onLoad: () => { console.log('video loaded') }onProgressDefault value:
falseFunction to be called on every successful frame extraction.
onProgress: (framesExtracted) => { console.log(`${framesExtracted} frames extracted`) }onProgress: (framesExtracted, totalFrames) => { console.log(`${framesExtracted} of ${totalFrames} frames extracted`) }
License
MIT © Utkarsh Verma
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago