Ready to take your JavaScript development to the next level? Meet npm Enterprise - the ultimate in enterprise JavaScript. Learn more »

simple-thumbnail

1.4.5 • Public • Published

simple-thumbnail

All Contributors npm version Build Status Coverage Status install size

A minimal library that produces thumbnails from images and videos using FFmpeg.

Installation

$ npm install simple-thumbnail --save

Usage

const genThumbnail = require('simple-thumbnail')
 
// promise
genThumbnail('path/to/image.png', 'output/file/path.png', '250x?')
  .then(() => console.log('done!'))
  .catch(err => console.error(err))
 
// async/await
async function run () {
  try {
    await genThumbnail('http://www.example.com/foo.webm', 'output/file/path.png', '250x?')
    console.log('Done!')
  } catch (err) {
    console.error(err)
  }
}
 
run()
 
// genThumbnail also supports piping to write streams, so you can do this with Express!
app.get('/some/endpoint', (req, res) => {
  genThumbnail('path/to/video.webm', res, '150x100')
    .then(() => console.log('done!'))
    .catch(err => console.error(err))
})

Getting FFmpeg

For those who don't have FFmpeg installed, there's an NPM package that installs it for you: https://www.npmjs.com/package/ffmpeg-static

const ffmpeg = require('ffmpeg-static')
const genThumbnail = require('simple-thumbnail')
 
async function download () {
  await genThumbnail('https://www.w3schools.com/Html/mov_bbb.webm', 'bunny.webm', '150x?', {
    path: ffmpeg.path
  })
  
  console.log('Done!')
}
 
download()

API

genThumbnail(input, output, size, [config])

Returns of a Promise which resolves on thumbnail creation.

input

Type: String | stream.Readable

The URL, file path, or read-stream of an image or video.

output

Type: String | stream.Writable | Null

The file path of the generated thumbnail, a write-stream, or null. If null, genThumbnail will resolve to a read-stream that you can pipe somewhere. If you're specifying a file path, make sure the directories exist.

size

Type: String

The dimensions of the generated thumbnail. The size argument may have one of the following formats:

  • 150x100: set a fixed output size.
  • 150x?: set a fixed width and compute the height automatically.
  • ?x100: set a fixed height and compute the width automatically.
  • 50%: rescale both width and height to given percentage.

config

Type: Object

A configuration object, see details below.

config.path

Type: String

The path of the ffmpeg binary. If omitted, the path will be set to the FFMPEG_PATH environment variable. If the environment variable is not set, ffmpeg will be invoked directly (ie. ffmpeg [...]).

config.seek

Type: String

Seeks the video to the provided time. The time must be in the following form: hh:mm:ss[.ms], eg. 00:00:42.23. If omitted, the video time will be set to 00:00:00 (ie. the first frame).

Contributors


Philip Scott

💻 ⚠️ 📖

cmd430

💻 🤔

Andre-John Mas

💻 🐛

This project follows the all-contributors specification.

Contributions of any kind are welcome!

Contributing

See CONTRIBUTING.md.

install

npm i simple-thumbnail

Downloadsweekly downloads

174

version

1.4.5

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability