Animated Thumbnails (Video Preview)

Learn what animated thumbnails are and how to use them with Brightcove Player and APIs.

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:

  1. Open the Players module and select your player or create a new player.
  2. Set your Player version to 7.37.3 or later.
  3. On the Overview tab, expand the Plugins accordion.
  4. In the Plugins section, click the Add Plugin dropdown and select Brightcove Plugin.
  5. In the Brightcove Plugin dropdown, select Video Poster.
  6. Configure the plugin options as needed (see plugin options below).
  7. Click Add.
  8. Click Publish Changes to publish your changes.

Plugin options

videoPoster 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
        }
      ]
}
    

Tracking preview interactions with player events

The videoPoster plugin emits two events on the Brightcove Player so you can measure how viewers interact with animated thumbnails — for example, how often a preview is watched and how often it leads to a click into the full video. Because these are standard player events, you can send them to any third-party analytics tool (Mixpanel, Adobe Analytics, Google Analytics, or your own endpoint) without using Brightcove Analytics.

Events

Animated thumbnail preview events
Event When it fires
videopreview-start A preview actually begins playing. Fires exactly once per preview session, and only after playback is confirmed — so it does not fire if autoplay is blocked by the browser, or if the viewer's pointer leaves the player before the delay has elapsed.
videopreview-end The preview session ends, whether it played out naturally or was interrupted. Fires exactly once per preview session, and never fires for a preview that never started.

Event properties

Both events include a videoId property. In addition:

Event properties
Event Property Type Description
videopreview-start playMode string The effective playMode option for this player ("auto" or "hover")
videopreview-start loop boolean The effective loop option for this player
videopreview-start previewDuration number The effective previewDuration option for this player, in seconds
videopreview-end reason string Why the session ended — see end reasons below
videopreview-end secondsViewed number Accumulated preview watch time for the session, in seconds. Time is accumulated across loops, so a looping preview watched for 25 seconds reports 25 rather than resetting on each loop.

End reasons

videopreview-end reason values
Value Meaning
complete The preview played all the way through. This happens only when loop is false — see the note below.
hover-out In hover mode, the viewer's pointer left the player
click-through The viewer clicked the preview to start the full video. This is the event to measure if you want a preview-to-play conversion rate.
main-play The full video started playing by some other means, such as the play button or a player.play() API call
error The preview encountered a playback error after it had started
teardown The video changed, a catalog error occurred, or the player was disposed while the preview was running

Listening for the events

Add the listeners to your page alongside the player embed. Replace myAnalytics with the tool you use.

videojs.getPlayer('myPlayerId').ready(function() {
  var player = this;

  player.on('videopreview-start', function(event) {
    myAnalytics.track('preview_started', {
      video: event.videoId,
      mode: event.playMode
    });
  });

  player.on('videopreview-end', function(event) {
    myAnalytics.track('preview_ended', {
      video: event.videoId,
      reason: event.reason,
      seconds: event.secondsViewed
    });

    // Preview-to-play conversion
    if (event.reason === 'click-through') {
      myAnalytics.track('preview_click_through', { video: event.videoId });
    }
  });
});
    

Capturing animated thumbnails using the Media Module

To capture an animated thumbnail, follow these steps:

  1. Open the Media Module and select your video.
  2. Put the video scrubber in the frame where you'd like the preview to start and Click Capture.

  3. 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
    }
    ...
  }
        
  • PATCH Update Video by ID
    {
        "video_preview": {
          "start": new_value
        }
      }