Repository navigation
Technical Plugin VideoThumbnails
Generates seek-bar preview sprites using the Web Encoder.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- 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.
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.
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.
| 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 |
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 |
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 | — |
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.
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 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- 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.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides