Skip to content

Technical Plugin VideoThumbnails

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical: VideoThumbnails plugin

Generates seek-bar preview sprites using the Web Encoder.

Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: independently versioned plugin repository.
  • Reported version: 6.0.
  • Source revision: 3af13fa2901e29a5e084f0b5f6c665d77053175d.
  • Entry class file: VideoThumbnails.php.

Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.

Behavior and operational checks

Page access requests a createSprite.php worker rather than saving an arbitrary Encoder response. Worker attempts are limited to one per destination every 600 seconds; up to five slots poll at 20-second intervals for at most 3600 seconds. Validation rejects placeholder file sizes even when dimensions match a sprite. Correlate createStprits logs, source reachability, locks and the saved *_thumbsSprit.jpg. Poster/GIF previews are different artifacts.

Dependencies

No literal dependency declaration was extracted. This does not prove the plugin is standalone.

Literal runtime plugin references: AWS_S3, Blackblaze_B2, CDN, FTP_Storage. These calls do not mean every referenced plugin is mandatory.

Hook integration

Override Implementation
getTags() VideoThumbnails.php:18
getHeadCode() VideoThumbnails.php:57
onEncoderNotifyIsDone($videos_id) VideoThumbnails.php:83
afterNewVideo($videos_id) VideoThumbnails.php:88
getFooterCode() VideoThumbnails.php:136
getPluginMenu() VideoThumbnails.php:491

Configuration assignments

These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.

Field Literal default or expression type Literal source label/help Evidence
width 150 — source
cacheFiles true — source
totalClips 100 — source

Files and request surface

This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.

File Source role Direct request fields observed
VideoThumbnails.php plugin entry class playlist_index
createSprite.php PHP page/include/worker; inspect caller —
delete.json.php JSON entry point; inspect caller and guard —
videojs.thumbnails.js browser/worker JavaScript; verify loader —

Data and migrations

No CREATE TABLE names were extracted from available plugin SQL. The plugin can still use core tables, PHP-created schema or another component's data. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.

Main-file named symbols

Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.

Function or method Source
getTags() 18
getDescription() 27
getName() 32
getUUID() 37
getPluginVersion() 42
getEmptyDataObject() 47
getHeadCode() 57
onEncoderNotifyIsDone($videos_id) 83
afterNewVideo($videos_id) 88
processNewVideo($videos_id) 93
getSprit($filename) 103
getSpritPath($filename) 120
getSpritURL($filename, $withTimestamp = true) 126
getFooterCode() 136
getSteps($videos_id_array) 183
createStpritsFileName($videoFileName, $sync = 0) 282
createStprits($videoFileName, $sync = 0) 288
isValidSpriteContent($content) 305
isValidSpriteFile($path) 318
spriteNeedsUpdate($destination) 328
getLockFile($name) 340
startSpriteWorker($videoFileName) 349
fetchSpriteFromEncoder($videoFileName) 367
getFirstVideoURL($videoFileName, $noCDN = false) 445
getFirstVideoPath($videoFileName) 481
getPluginMenu() 491

Diagnostics and validation

  1. Check the installed/enabled version and the dependencies/settings above.
  2. Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
  3. Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
  4. Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.

Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.

Clone this wiki locally