Packaged Plugins

In this topic, we introduced Packaged Plugins with Brightcove Player version 7.21.0, a new way to manage core player features. This replaces the Plugin Registry.

What are Packaged Plugins?

Player features, including Advertising, Thumbnail Seeking, Playlists, and others, have historically been provided as plugins, and their management handled by a separate service called the Plugin Registry. The Plugin Registry was initially designed to make managing player plugins efficient without user interaction. Still, over the years, it has led to confusion and mismatches in versions, leading to problems that could have been avoided.

A common problem has been trying to use an old plugin version with a new player version (or vice versa), with the plugin relying on specific player functionality that may be different than expected or not present, leading to unexpected behavior or failures. We saw multiple examples of this with advertising as browsers moved to block autoplay with sound by default.

By moving features into the player's core, we ensure that the code being used is the right version for the player because there is no longer a separate version. It's a part of the player that's been tested to function as expected.

Current Supported Packaged Plugins

Brightcove Plugin Registry ID (Players below v7.21.0) Package Plugin Name (v7.21.0+)
Thumbnail Seeking @brightcove/videojs-thumbnails thumbnails
IMA3 @brightcove/videojs-ima3 ima3
SSAI @brightcove/videojs-ssai ssai
Custom Endscreen @brightcove/videojs-custom-endscreen customEndscreen
Social Sharing @brightcove/videojs-social social
Quality Selection @brightcove/videojs-quality-menu qualityMenu
Playlist UI @brightcove/videojs-bc-playlist-ui bcPlaylistUi

What if I need to use plugin version X with player version Y?

You shouldn't have to! The concept of Packaged Plugins is to ensure that the feature you are using is 100% compatible with your player version. Trying to use a different version goes against this.

How do I know if I'm using a Packaged Plugin?

Registry plugin - notice that this JSON has no injected_versions, scripts, or stylesheets. The Registry just made this work:

    
      "plugins": [{
        "registry_id": "@brightcove/videojs-custom-endscreen",
        "version": "3.x",
        "options": {
          "content": ""
        }
  }],
        
          

Packaged Plugin version of the same feature:

        
          "plugins": [{
            "name": "customEndscreen",
            "is_packaged": true,
            "options": {
              "content": ""
            }
      }],
            
              

Packaged Plugins replaced registry_id with name and version with is_packaged: true.

In the player information modal, you'll see the plugin version as “Packaged with Player.” If you see a version string, this would be an older, legacy version, which can be updated with the current packaged version instead.

What if I must “sideload” a core plugin during player load time?

You should never need to do that, and we recommend against it. Brightcove's player management system is designed to compile all the features you need and deliver a working player with those features to your users.

By way of example:

  • Instead of sideloading the IMA3 plugin to support ads, if you need to deliver ads to your users, use a player with the IMA3 feature enabled.
  • If you don't need ads in other situations, use a different player without the IMA3 feature enabled.
  • To support both scenarios, use an IMA3-enabled player and programmatically configure ads only when needed.

What about custom or third-party plugins?

We have not changed or removed any functionality for those. These changes only affect plugins managed by the plugin registry.