@bigfootds/nodejs-trickplay
Generate trickplay images for a given video file, for usage in NodeJS environments.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.0%) to scientific vocabulary
Keywords
Repository
Generate trickplay images for a given video file, for usage in NodeJS environments.
Basic Info
- Host: GitHub
- Owner: BigfootDS
- License: mit
- Language: TypeScript
- Default Branch: main
- Homepage: https://www.npmjs.com/package/@bigfootds/nodejs-trickplay
- Size: 2.88 MB
Statistics
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 3
Topics
Metadata Files
README.md
@bigfootds/nodejs-trickplay
Generate trickplay images for a given video file, for usage in NodeJS environments.
Basically just recreating the Jellyfin approach to trickplay, via NodeJS.
Installation
This is a scoped package, to the @bigfootds namespace. Your installation command should look something like this:
npm install @bigfootds/nodejs-trickplay
The dependencies of this package should automatically sort out the ffmpeg and ffprobe installations for your operating systems.
Usage
When given an absolute path to a video file, this package will create trickplay data alongside that specified video file.
```js const { generateTrickplay } = require("@bigfootds/nodejs-trickplay"); const path = require("node:path");
let pathAbsolute = path.resolve("./.sandbox/SomeCoolVideo (2025) - WEBDL-1080p.mkv");
generateTrickplay(pathAbsolute); ```
If you already have raw trickplay frames in a neighbouring .trickplay folder for your video content, then you can also skip the frame generation and just use your existing raw trickplay frames.
```js const { generateTrickplay } = require("@bigfootds/nodejs-trickplay"); const path = require("node:path");
let pathAbsolute = path.resolve("./.sandbox/SomeCoolVideo (2025) - WEBDL-1080p.mkv");
generateTrickplay(pathAbsolute, {skipIndividualFrameGeneration: true}); ```
There are additional options available as well, but they are all optional. Anything not specified will fall back to a value in line with a value typical of Jellyfin trickplay behaviour.
```js { // Defaults to a ".trickplay" directory based on the target video file, neighbouring that file. trickplayOutputDir?: string; // Defaults to 10. Causes frame generation to grab a frame from every X seconds of the target video. secondsBetweenFrames?: number; // Defaults to 320. The width of the individual frames generated by the system. Works best when smaller than the target video width. trickplayImageWidth?: number; // Defaults to 10. Determines how many individual frames are squeezed into a single tilesheet. trickplaySheetRows?: number; // Defaults to 10. Determines how many individual frames are squeezed into a single tilesheet. trickplaySheetColumns?: number; // Defaults to false. Allows you to use pre-existing individual frames in the trickplayOutDir. Very handy for debugging! skipIndividualFrameGeneration?: boolean;
// Calculated at runtime, try not to use it.
numberOfFramesToGrab?: number;
// Calculated at runtime, try not to use it.
frameTimestamps?: string[];
} ```
More Info
So, given a folder like:
Videos/SomeCoolVideo (2025) - WEBDL-1080p.mp4
This will generate trickplay images and organise them into a nearby folder, adding content to the directory containing the specified video file:
- Videos/
- SomeCoolVideo (2025) - WEBDL-1080p.mp4
- SomeCoolVideo (2025) - WEBDL-1080p.trickplay/
- 320 - 10x10/
- 0.jpg
- 1.jpg
- 2.jpg
- frames/
- 0.jpg
- 1.jpg
- 2.jpg
Each trickplay JPG file is a tilesheet of multiple frames from the target video. Longer videos will automatically create multiple tilesheets, constrained by the number of rows and columns you specified when calling the package's function.

Individual frames are kept as well, so you can potentially not use tilesheets in your trickplay implementation for your video player.

Owner
- Name: BigfootDS
- Login: BigfootDS
- Kind: organization
- Email: contact@bigfootds.com
- Location: Sydney, AUS
- Website: https://bigfootds.com
- Repositories: 1
- Profile: https://github.com/BigfootDS
Game development group.
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: NodeJS Trickplay
authors:
- family-names: Stormwood
given-names: Alex
orcid: https://orcid.org/0009-0008-2183-7041
abstract: Generate trickplay images for a given video file, for usage in NodeJS environments.
repository-code: "https://github.com/BigfootDS/nodejs-trickplay"
version: 1.0.0
license-url: "https://spdx.org/licenses/MIT"
keywords:
- nodejs
- npm
- npm-package
- video-processing
- video-preview
- trickplay
- video-scrubbing
- vide-preview-thumbnails
date-released: 2025-04-21
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"type": "software",
"author": [
{
"@id": "https://orcid.org/0009-0008-2183-7041",
"@type": "Person",
"email": "alex@bigfootds.com",
"givenName": "Alex",
"familyName": "Stormwood",
"affiliation": {
"@type": "Organization",
"name": "BigfootDS"
}
}
],
"codeRepository": "https://github.com/BigfootDS/nodejs-trickplay",
"url": "https://github.com/BigfootDS/nodejs-trickplay",
"dateCreated": "2025-04-20",
"dateModified": "2025-04-21",
"datePublished": "2025-04-21",
"description": "Generate trickplay images for a given video file, for usage in NodeJS environments.",
"abstract": "Generate trickplay images for a given video file, for usage in NodeJS environments.",
"downloadUrl": "https://github.com/BigfootDS/nodejs-trickplay",
"keywords": [
"nodejs",
"npm",
"npm-package",
"video-processing",
"video-preview",
"trickplay",
"video-scrubbing",
"vide-preview-thumbnails"
],
"license": "https://spdx.org/licenses/MIT",
"name": "NodeJS Trickplay",
"programmingLanguage": "JavaScript",
"runtimePlatform": "NodeJS",
"version": "1.0.0",
"contIntegration": "https://github.com/BigfootDS/nodejs-trickplay/actions",
"codemeta:continuousIntegration": {
"id": "https://github.com/BigfootDS/nodejs-trickplay/actions"
},
"developmentStatus": "active",
"issueTracker": "https://github.com/BigfootDS/nodejs-trickplay/issues"
}
GitHub Events
Total
- Release event: 1
- Push event: 2
- Public event: 1
- Create event: 1
Last Year
- Release event: 1
- Push event: 2
- Public event: 1
- Create event: 1
Packages
- Total packages: 1
-
Total downloads:
- npm 5 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 4
- Total maintainers: 1
npmjs.org: @bigfootds/nodejs-trickplay
Generate trickplay images for a given video file, for usage in NodeJS environments.
- Homepage: https://github.com/BigfootDS/nodejs-trickplay#readme
- License: MIT
-
Latest release: 1.0.2
published 10 months ago
Rankings
Maintainers (1)
Dependencies
- JS-DevTools/npm-publish v3 composite
- actions/checkout v4 composite
- actions/create-release v1 composite
- actions/setup-node v4 composite
- eregon/publish-release v1.0.6 composite
- mathieudutour/github-tag-action v6.2 composite
- reedyuk/npm-version master composite
- stefanzweifel/git-auto-commit-action v5 composite
- EndBug/add-and-commit v9 composite
- actions/checkout v4 composite
- caltechlibrary/codemeta2cff main composite
- actions/checkout v4 composite
- thollander/actions-comment-pull-request v2 composite
- CondeNast/conventional-pull-request-action v0.2.0 composite
- actions/checkout v4 composite
- @types/fluent-ffmpeg 2.1.27 development
- @types/node 22.14.1 development
- typescript 5.8.3 development
- undici-types 6.21.0 development
- @ffmpeg-installer/darwin-arm64 4.1.5
- @ffmpeg-installer/darwin-x64 4.1.0
- @ffmpeg-installer/ffmpeg 1.1.0
- @ffmpeg-installer/linux-arm 4.1.3
- @ffmpeg-installer/linux-arm64 4.1.4
- @ffmpeg-installer/linux-ia32 4.1.0
- @ffmpeg-installer/linux-x64 4.1.0
- @ffmpeg-installer/win32-ia32 4.1.0
- @ffmpeg-installer/win32-x64 4.1.0
- @ffprobe-installer/darwin-arm64 5.0.1
- @ffprobe-installer/darwin-x64 5.1.0
- @ffprobe-installer/ffprobe 2.1.2
- @ffprobe-installer/linux-arm 5.2.0
- @ffprobe-installer/linux-arm64 5.2.0
- @ffprobe-installer/linux-ia32 5.2.0
- @ffprobe-installer/linux-x64 5.2.0
- @ffprobe-installer/win32-ia32 5.1.0
- @ffprobe-installer/win32-x64 5.1.0
- @jimp/core 1.6.0
- @jimp/diff 1.6.0
- @jimp/file-ops 1.6.0
- @jimp/js-bmp 1.6.0
- @jimp/js-gif 1.6.0
- @jimp/js-jpeg 1.6.0
- @jimp/js-png 1.6.0
- @jimp/js-tiff 1.6.0
- @jimp/plugin-blit 1.6.0
- @jimp/plugin-blur 1.6.0
- @jimp/plugin-circle 1.6.0
- @jimp/plugin-color 1.6.0
- @jimp/plugin-contain 1.6.0
- @jimp/plugin-cover 1.6.0
- @jimp/plugin-crop 1.6.0
- @jimp/plugin-displace 1.6.0
- @jimp/plugin-dither 1.6.0
- @jimp/plugin-fisheye 1.6.0
- @jimp/plugin-flip 1.6.0
- @jimp/plugin-hash 1.6.0
- @jimp/plugin-mask 1.6.0
- @jimp/plugin-print 1.6.0
- @jimp/plugin-quantize 1.6.0
- @jimp/plugin-resize 1.6.0
- @jimp/plugin-rotate 1.6.0
- @jimp/plugin-threshold 1.6.0
- @jimp/types 1.6.0
- @jimp/utils 1.6.0
- @tokenizer/token 0.3.0
- @types/node 16.9.1
- abort-controller 3.0.0
- any-base 1.1.0
- async 0.2.10
- await-to-js 3.0.0
- base64-js 1.5.1
- bmp-ts 1.0.9
- buffer 6.0.3
- event-target-shim 5.0.1
- events 3.3.0
- exif-parser 0.1.12
- file-type 16.5.4
- fluent-ffmpeg 2.1.3
- gifwrap 0.10.1
- ieee754 1.2.1
- image-q 4.0.0
- isexe 2.0.0
- jimp 1.6.0
- jpeg-js 0.4.4
- mime 3.0.0
- omggif 1.0.10
- pako 1.0.11
- parse-bmfont-ascii 1.0.6
- parse-bmfont-binary 1.0.6
- parse-bmfont-xml 1.1.6
- peek-readable 4.1.0
- pixelmatch 5.3.0
- pngjs 7.0.0
- pngjs 6.0.0
- process 0.11.10
- readable-stream 4.7.0
- readable-web-to-node-stream 3.0.4
- safe-buffer 5.2.1
- sax 1.4.1
- simple-xml-to-json 1.2.3
- string_decoder 1.3.0
- strtok3 6.3.0
- tinycolor2 1.6.0
- token-types 4.2.1
- utif2 4.1.0
- which 1.3.1
- xml-parse-from-string 1.0.1
- xml2js 0.5.0
- xmlbuilder 11.0.1
- zod 3.24.3
- @types/fluent-ffmpeg ^2.1.27 development
- @types/node ^22.14.1 development
- typescript ^5.8.3 development
- @ffmpeg-installer/ffmpeg ^1.1.0
- @ffprobe-installer/ffprobe ^2.1.2
- fluent-ffmpeg ^2.1.3
- jimp ^1.6.0