{"_id":"@advisr/video-thumbnail-generator","_rev":"3-47306b20e936195991aabc752c46494f","name":"@advisr/video-thumbnail-generator","dist-tags":{"latest":"1.1.4"},"versions":{"1.1.4":{"name":"@advisr/video-thumbnail-generator","version":"1.1.4","license":"MIT","_id":"@advisr/video-thumbnail-generator@1.1.4","maintainers":[{"name":"jrohland","email":"jesse.rohland@gmail.com"}],"dist":{"shasum":"72b36047a4a3e3812ec68c1dd3dfb9809e4bb95b","tarball":"https://registry.npmjs.org/@advisr/video-thumbnail-generator/-/video-thumbnail-generator-1.1.4.tgz","fileCount":12,"integrity":"sha512-Hu5anX6OjVFMTN8a3CuHTsCyCBKok5GoTylyCe1yawYirOJl4HwBEk4xw3byKVo93cebLXxICKK9VSnPOP82rA==","signatures":[{"sig":"MEUCIHZFzExWjrxwbVQ+RWxtGICLgbABWoBUuPqV0maIuLwTAiEA2s4dJLvK3rB5flp9fVhcFIoYT/TRHXXieLGwVufIMAg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkT9H5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvZxAAk/mHt1tt9NMr2EkayIvS185HsN2vM3ECk0eUTb7WqENLLxWt\r\nMEHb3FTyynTQWln0PeyKVCs6fZJpsijQuN1XYv/QoI3FQwjDTwjEus02CGzF\r\nbI8xs8Mwrk79d+nBtCAedfuMq/nXjH0F+KsnChORj9P+KiuVBaIfp9Vwesbk\r\n6Go7MJLlHB95Wv4KJChUDH2Bv2BgSPQXs2Ih1MkH6ZkjrufOWeopy89l28/r\r\nhuSfOcEFQcSCBlwnZovrM4W6+rf2CGpvXE1xYWECOhxUFWc1tL3P+sloiPSH\r\n+B/oP38q9c52qEl6C3wrH++9dhB4tJ7an4Mh8vWHRgpYm/0tVzeBAJcCnJb9\r\nOpCnSCBtyOgNo9IJkkLx/fQNAEX5zPsFVc6vcHNDm65cbCfBOwZIfbcCc92N\r\nKOs1LUDYLxRfI6MVD49jQvr1d9FM3sDdScSR6Cdn2U6mYNKm9Y3hOSwKQ0RQ\r\nIbWEMXrklRhx/FQmPmL8TGadA87RN8w0En1pGciS80xPI60dV6+aPNETwUCq\r\n2tfvDAt+JK8MxjaXtbqi2yHLWPJF7Z2oTC47tLv6kSJaYr1ibt0NFnnqc50s\r\npbEuS2qFeB3m73U6ZfRSR6XgEfZBjRSaRUbBNCMh0koKKDMhOpSC6G96LYTG\r\nihYxOrVpRdLW4+UNJsEtBc/3lTrLMlsw39c=\r\n=Gqhh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","scripts":{"test":"./node_modules/.bin/gulp test","clean":"./node_modules/.bin/gulp clean","watch":"./node_modules/.bin/gulp watch","compile":"./node_modules/.bin/gulp build"},"_npmUser":{"name":"jrohland","email":"jesse.rohland@gmail.com"},"repository":{"url":"https://github.com/advisr-io/video-thumbnail-generator","type":"git"},"description":"Package to generate a thumbail for an mp4 video","directories":{},"resolutions":{"mkdirp":"0.5.5","lodash.template":"4.5.0"},"dependencies":{"del":"^5.1.0","lodash":"^4.17.15","fluent-ffmpeg":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","gulp":"^4.0.2","sinon":"^2.1.0","eslint":"^7.19.0","isparta":"^4.0.0","istanbul":"^0.4.5","fancy-log":"^1.3.3","gulp-babel":"^6.1.2","gulp-mocha":"^7.0.2","sinon-chai":"^2.9.0","gulp-eslint":"^3.0.1","babel-eslint":"^7.2.1","gulp-plumber":"^1.1.0","run-sequence":"^1.2.2","gulp-istanbul":"^1.1.3","babel-polyfill":"^6.23.0","babel-register":"^6.24.0","gulp-sourcemaps":"^2.4.1","babel-preset-env":"^1.7.0","eslint-plugin-mocha":"^8.0.0","eslint-plugin-react":"^7.22.0","gulp-babel-istanbul":"^1.6.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-jsx-a11y":"^6.4.1"},"_npmOperationalInternal":{"tmp":"tmp/video-thumbnail-generator_1.1.4_1682952697740_0.1812226350858177","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-05-01T14:51:37.669Z","modified":"2025-07-17T12:25:07.537Z","1.1.4":"2023-05-01T14:51:37.886Z"},"license":"MIT","repository":{"url":"https://github.com/advisr-io/video-thumbnail-generator","type":"git"},"description":"Package to generate a thumbail for an mp4 video","maintainers":[{"email":"jesse.rohland@gmail.com","name":"jrohland"}],"readme":"# Video Thumbnail Generator\n\n[![Build Status](https://travis-ci.org/advisr-io/video-thumbnail-generator.svg?branch=master)](https://travis-ci.org/advisr-io/video-thumbnail-generator)\n![david-dm](https://david-dm.org/advisr-io/video-thumbnail-generator.svg)\n\n## Quick Start\n\n```js\nimport ThumbnailGenerator from 'video-thumbnail-generator';\n// const ThumbnailGenerator = require('video-thumbnail-generator').default;\n\nconst tg = new ThumbnailGenerator({\n  sourcePath: '/tmp/test.mp4',\n  thumbnailPath: '/tmp/',\n  tmpDir: '/some/writeable/directory' //only required if you can't write to /tmp/ and you need to generate gifs\n});\n\ntg.generate()\n  .then(console.log);\n  // [ 'test-thumbnail-320x240-0001.png',\n  //  'test-thumbnail-320x240-0002.png',\n  //  'test-thumbnail-320x240-0003.png',\n  //  'test-thumbnail-320x240-0004.png',\n  //  'test-thumbnail-320x240-0005.png',\n  //  'test-thumbnail-320x240-0006.png',\n  //  'test-thumbnail-320x240-0007.png',\n  //  'test-thumbnail-320x240-0008.png',\n  //  'test-thumbnail-320x240-0009.png',\n  //  'test-thumbnail-320x240-0010.png' ]  \n\ntg.generateOneByPercent(90)\n  .then(console.log);\n  // 'test-thumbnail-320x240-0001.png'\n \ntg.generateCb((err, result) => {\n  console.log(result);\n  // [ 'test-thumbnail-320x240-0001.png',\n  //  'test-thumbnail-320x240-0002.png',\n  //  'test-thumbnail-320x240-0003.png',\n  //  'test-thumbnail-320x240-0004.png',\n  //  'test-thumbnail-320x240-0005.png',\n  //  'test-thumbnail-320x240-0006.png',\n  //  'test-thumbnail-320x240-0007.png',\n  //  'test-thumbnail-320x240-0008.png',\n  //  'test-thumbnail-320x240-0009.png',\n  //  'test-thumbnail-320x240-0010.png' ]  \n});\n\ntg.generateOneByPercentCb(90, (err, result) => {\n  console.log(result);\n  // 'test-thumbnail-320x240-0001.png'\n});\n\ntg.generateGif()\n  .then(console.log();\n  // '/full/path/to/video-1493133602092.gif'\n\ntg.generateGifCb((err, result) => {\n  console.log(result);\n  // '/full/path/to/video-1493133602092.gif'\n})\n```\n\n## Options\n\nThere 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:\n\n### When generating screenshots/thumbnails\n\n```js\ntg.generate({\n  size: '200x200'\n})\n  .then(console.log);\n  // [ 'test-thumbnail-200x200-0001.png',\n  //  'test-thumbnail-200x200-0002.png',\n  //  'test-thumbnail-200x200-0003.png',\n  //  'test-thumbnail-200x200-0004.png',\n  //  'test-thumbnail-200x200-0005.png',\n  //  'test-thumbnail-200x200-0006.png',\n  //  'test-thumbnail-200x200-0007.png',\n  //  'test-thumbnail-200x200-0008.png',\n  //  'test-thumbnail-200x200-0009.png',\n  //  'test-thumbnail-200x200-0010.png' ]\n\n\ntg.generateCb({\n  size: '200x200'\n}, (err, result) => {\n  console.log(result);\n  // [ 'test-thumbnail-200x200-0001.png',\n  //  'test-thumbnail-200x200-0002.png',\n  //  'test-thumbnail-200x200-0003.png',\n  //  'test-thumbnail-200x200-0004.png',\n  //  'test-thumbnail-200x200-0005.png',\n  //  'test-thumbnail-200x200-0006.png',\n  //  'test-thumbnail-200x200-0007.png',\n  //  'test-thumbnail-200x200-0008.png',\n  //  'test-thumbnail-200x200-0009.png',\n  //  'test-thumbnail-200x200-0010.png' ]    \n});\n```\nThe `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)\n\n\n### When generating gifs\n```js\ntg.generateGif({\n   fps: 0.75, //how many frames per second you want in your gif\n   scale: 180, //the smaller the number, the smaller the thumbnail\n   speedMultiple: 4, //this is 4x speed\n   deletePalette: true //to delete the palettefile that was generated to create the gif once gif is created \n});\n```\n\n## Tests\n\n`./node_modules/.bin/gulp test`\n\nElse, if you want to run with a code coverage report:\n`./node_modules/.bin/gulp test:coverage`","readmeFilename":"README.md"}