https://github.com/volumenetwork/video-thumbnail-generator
node js module to create thumbnails from a video
https://github.com/volumenetwork/video-thumbnail-generator
generating-thumbnails gif-maker gif-thumbnail screenshot thumbnails video video-thumbnail-generator
Last synced: 3 months ago
JSON representation
node js module to create thumbnails from a video
- Host: GitHub
- URL: https://github.com/volumenetwork/video-thumbnail-generator
- Owner: volumenetwork
- Created: 2017-04-20T10:34:57.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2021-06-29T15:27:42.000Z (about 4 years ago)
- Last Synced: 2025-03-27T13:51:31.192Z (3 months ago)
- Topics: generating-thumbnails, gif-maker, gif-thumbnail, screenshot, thumbnails, video, video-thumbnail-generator
- Language: JavaScript
- Size: 85.9 KB
- Stars: 57
- Watchers: 2
- Forks: 16
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Video Thumbnail Generator
[](https://travis-ci.org/volumenetwork/video-thumbnail-generator)
## Quick Start
```js
import ThumbnailGenerator from 'video-thumbnail-generator';
// const ThumbnailGenerator = require('video-thumbnail-generator').default;const tg = new ThumbnailGenerator({
sourcePath: '/tmp/test.mp4',
thumbnailPath: '/tmp/',
tmpDir: '/some/writeable/directory' //only required if you can't write to /tmp/ and you need to generate gifs
});tg.generate()
.then(console.log);
// [ 'test-thumbnail-320x240-0001.png',
// 'test-thumbnail-320x240-0002.png',
// 'test-thumbnail-320x240-0003.png',
// 'test-thumbnail-320x240-0004.png',
// 'test-thumbnail-320x240-0005.png',
// 'test-thumbnail-320x240-0006.png',
// 'test-thumbnail-320x240-0007.png',
// 'test-thumbnail-320x240-0008.png',
// 'test-thumbnail-320x240-0009.png',
// 'test-thumbnail-320x240-0010.png' ]tg.generateOneByPercent(90)
.then(console.log);
// 'test-thumbnail-320x240-0001.png'
tg.generateCb((err, result) => {
console.log(result);
// [ 'test-thumbnail-320x240-0001.png',
// 'test-thumbnail-320x240-0002.png',
// 'test-thumbnail-320x240-0003.png',
// 'test-thumbnail-320x240-0004.png',
// 'test-thumbnail-320x240-0005.png',
// 'test-thumbnail-320x240-0006.png',
// 'test-thumbnail-320x240-0007.png',
// 'test-thumbnail-320x240-0008.png',
// 'test-thumbnail-320x240-0009.png',
// 'test-thumbnail-320x240-0010.png' ]
});tg.generateOneByPercentCb(90, (err, result) => {
console.log(result);
// 'test-thumbnail-320x240-0001.png'
});tg.generateGif()
.then(console.log();
// '/full/path/to/video-1493133602092.gif'tg.generateGifCb((err, result) => {
console.log(result);
// '/full/path/to/video-1493133602092.gif'
})
```## Options
There are options that can be passed when generating thumbnails. Both `ThumbnailGenerate.generate(opts)` and `ThumbnailGenerate.generateOneByPercent(number, opts)` can take options. See example below to get screenshots at a resolution of 200x200:
### When generating screenshots/thumbnails
```js
tg.generate({
size: '200x200'
})
.then(console.log);
// [ 'test-thumbnail-200x200-0001.png',
// 'test-thumbnail-200x200-0002.png',
// 'test-thumbnail-200x200-0003.png',
// 'test-thumbnail-200x200-0004.png',
// 'test-thumbnail-200x200-0005.png',
// 'test-thumbnail-200x200-0006.png',
// 'test-thumbnail-200x200-0007.png',
// 'test-thumbnail-200x200-0008.png',
// 'test-thumbnail-200x200-0009.png',
// 'test-thumbnail-200x200-0010.png' ]tg.generateCb({
size: '200x200'
}, (err, result) => {
console.log(result);
// [ 'test-thumbnail-200x200-0001.png',
// 'test-thumbnail-200x200-0002.png',
// 'test-thumbnail-200x200-0003.png',
// 'test-thumbnail-200x200-0004.png',
// 'test-thumbnail-200x200-0005.png',
// 'test-thumbnail-200x200-0006.png',
// 'test-thumbnail-200x200-0007.png',
// 'test-thumbnail-200x200-0008.png',
// 'test-thumbnail-200x200-0009.png',
// 'test-thumbnail-200x200-0010.png' ]
});
```
The `opts` above can take anything that options in [fluent-ffmpeg's Screenshots allow](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg#screenshotsoptions-dirname-generate-thumbnails)### When generating gifs
```js
tg.generateGif({
fps: 0.75, //how many frames per second you want in your gif
scale: 180, //the smaller the number, the smaller the thumbnail
speedMultiple: 4, //this is 4x speed
deletePalette: true //to delete the palettefile that was generated to create the gif once gif is created
});
```## Tests
`./node_modules/.bin/gulp test`
Else, if you want to run with a code coverage report:
`./node_modules/.bin/gulp test:coverage`