What are animated thumbnails?
Animated thumbnails are short, looping video previews extracted from the main video. They replace static images to provide a more engaging browsing experience.
Animated thumbnails:
- Delivered as one or more HLS manifests
- Default duration: ~10 seconds
- Default start time: first frame (customizable)
- Intended for use in place of static posters/thumbnails in grids, lists, and other preview contexts
Configuring animated thumbnails with your Brightcove Player
To use animated thumbnails with your Brightcove Player, follow these steps:
- Open the Players module and select your player or create a new player.
- Set your Player version to 7.37.3 or later.
- On the Overview tab, expand the Plugins accordion.
- In the Plugins section, click the Add Plugin dropdown and select Brightcove Plugin.
- In the Brightcove Plugin dropdown, select Video Poster.
- Configure the plugin options as needed (see plugin options below).
- Click Add.
- Click Publish Changes to publish your changes.
Plugin options
| Option | Type | Description |
|---|---|---|
playMode |
string | "auto" – autoplay preview on load"hover" – play preview only on hover |
loop |
boolean | true to loop preview, false to play once |
delay |
number | Delay in milliseconds before preview starts (helps avoid unintended playback) |
playButtonVisible |
boolean | Shows the play button during preview (true) or hides it (false) |
previewDuration |
number | Length of the preview in seconds, as an integer between 1 and 10 (default 10) |
initialBandwidth |
number | Initial bandwidth estimate, in bits per second, used to select the starting HLS rendition. The preview begins at the highest rendition that fits within this value instead of the lowest. The default of 3000000 (3 Mbps) targets the 720p rendition on standard Brightcove ingest profiles. Set to 0 to let the player select the rendition on its own. |
lockRendition |
boolean | When true, the preview is held at the initialBandwidth-selected rendition for its entire duration, preventing the player's adaptive bitrate (ABR) logic from switching to a higher-bandwidth rendition. If no rendition fits within initialBandwidth, the lowest available rendition is used. This caps the bandwidth a preview can consume — useful when many previews play at once (for example, a grid of hover-to-play thumbnails). Has no effect unless initialBandwidth is set. Defaults to false. |
Example plugin configuration
When you add the videoPoster plugin using the dropdown menu, the following configuration will be applied to your player:
{
"plugins": [
{
"name": "videoPoster",
"options": {
"playMode": "hover",
"loop": true,
"delay": 300,
"playButtonVisible": true,
"previewDuration": 10,
"initialBandwidth": 3000000,
"lockRendition": false
},
"is_packaged": true
}
]
}
Capturing animated thumbnails using the Media Module
To capture an animated thumbnail, follow these steps:
- Open the Media Module and select your video.
- Put the video scrubber in the frame where you'd like the preview to start and Click Capture.
- Select Video Preview and click Capture.
Reviewing animated thumbnails using the API
The video_preview field is available through both the Playback API and the CMS API. This allows you to retrieve and manage animated thumbnail previews programmatically.
Playback API
The video_preview field is returned as a top-level property of videos in the Playback API for the following requests:
Example video_preview (playlist Playback API)
{
"account_id": "...",
"id": "...",
"videos": [
{
"account_id": "...",
"sources": [ "..." ],
"video_preview": [
{
"ext_x_version": "7",
"src": "http://manifest.prod.boltdns.net/.../preview.m3u8?...",
"type": "application/x-mpegURL"
},
{
"ext_x_version": "7",
"src": "https://manifest.prod.boltdns.net/.../preview.m3u8?...",
"type": "application/x-mpegURL"
}
]
}
]
}
CMS API
In addition to the Playback API, the video_preview field is also supported in the CMS API for retrieving and updating video previews.
Example request
https://cms.api.brightcove.com/v1/accounts/<account_id>/videos/<video_id>?include_video_preview=true
Example response
{
...
"video_preview": {
"start": 10000,
"sources": [ ... ] // Same format as Playback API
}
...
}
{
"video_preview": {
"start": new_value
}
}