Giter Site home page Giter Site logo

video-thumbnail-generator's Introduction

Video Thumbnail Generator

Build Status david-dm

Quick Start

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

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

When generating gifs

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

video-thumbnail-generator's People

Contributors

entriphy avatar irvingswiftj avatar james-richards-privitar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.