artplayer-plugin-auto-thumbnail
Auto thumbnail plugin for ArtPlayer
Demo
License
MIT © Harvey Zhao
TypeScript
The root and /legacy entries retain the declarations published in 1.1.0,
including the historical synchronous result type. The implementation actually
returns a Promise when registering the plugin. For accurate types, opt into
/runtime, which uses the same JavaScript implementation:
import Artplayer from 'artplayer'
import autoThumbnail from 'artplayer-plugin-auto-thumbnail/runtime'
import type { Option, Result } from 'artplayer-plugin-auto-thumbnail/runtime'
const option: Option = { width: 160, number: 100, scale: 1 }
const art = new Artplayer({
container: '#player',
url: '/video.mp4',
plugins: [autoThumbnail(option)],
})
The registrar has type (art: Artplayer) => Promise<Result>. It resolves with
{ name: 'artplayerPluginAutoThumbnail' } after subscribing to player events,
before extraction completes. Generated sheets arrive progressively through the
player's thumbnails configuration. Awaiting registration does not wait for them.
If an application invokes a retained registrar after the player is destroyed,
it resolves with the same name without subscribing or allocating a decoder.
This does not override the core's own plugins.add() destruction checks.
The options object is required; use {} for defaults. height is accepted by
the runtime type for historical callers but remains ignored: the video aspect
ratio determines sheet height. Numeric strings retain their old JavaScript
coercion behavior but are not advertised as numeric TypeScript options.
The private decoder stops if metadata does not arrive within 30 seconds. Frame readiness and each JPEG encoding operation also have their own 30-second limit. Failures use the existing console warning and retain the last usable thumbnail sheet; registration still resolves before processing. Restarting or destroying the player cancels the active wait and releases the private decoder.
The runtime entry supports default ESM imports and CommonJS
import autoThumbnail = require('artplayer-plugin-auto-thumbnail/runtime').
It exports the Option, Result, Factory, and RuntimeFactory types. Factory
describes a plain asynchronous registrar factory; RuntimeFactory also describes
the writable .default self alias. This alias preserves 1.0.1 JavaScript callers
using require('artplayer-plugin-auto-thumbnail').default(...), while direct
1.1.0 calls continue to work. Both use the same function, including /legacy and
the script global. The result has no extraction-completion or destroy API.
Node10 resolution uses typesVersions; modern resolution uses separate ESM/CJS
declarations. The old root's NodeNext namespace behavior is preserved; /runtime
provides a direct default-import type without changing that old declaration.
The historical root factory type remains a plain function without a declared
.default property, preserving old type extraction and replacement functions;
use /runtime when type-checking the alias.
Versions 1.0.x used export = declarations and advertised height instead of
number; 1.1.0 had already changed these types. This refactor retains the actual
1.1.0 root declaration rather than introducing another conflicting root shape.
Consumers needing the older ignored height option can use /runtime.
See ARCHITECTURE.md for module ownership, tests, and remaining browser extraction limitations. This type entry does not resolve the documented Windows WebKit first-frame issue.