About the Wowza Flowplayer plugins

Wowza Flowplayer can be extended through the use of various plugins. As module extensions, plugins allow users to customize their viewing experience and developers to extend the player's capabilities without altering its core design.

Plugin descriptions

The following table provides an overview of available plugins and links to important documentation for usage.

Plugin Configuration Description Example
Advertising ima
object
Ad configuration. Only available on Professional and Enterprise plans. Default: none See Advertising plugin for details.
AirPlay airplay
string
Implements an Apple AirPlay feature that allows you to play content on AirPlay devices. An AirPlay device selection button appears when AirPlay devices are available in the same WiFi network. Load the AirPlay plugin. Do not add the config string.
Audio Track Selection asel
object or boolean
Adds support for multiple audio tracks in HLS or DASH streams. See Audio Track Selection plugin for details.
Chromecast chromecast
string
Implements a Chromecast feature that plays content on Chromecast enabled devices. A Chromecast device selection button appears when Chromceast devices are available in the same WiFi network and you're using a Chromecast-enabled browser. Load the Chromecast plugin. Do not add the config string.
Comscore Analytics comscore
object
Allows you to track your media content in Comscore. See Comscore Analytics plugin for details.
Cuepoints cuepoints
object
Adds cuepoint support to the player. See Cuepoints plugin for details.
MPEG-DASH dash
object
Implements an MPEG-DASH loader plugin, which is capable of playing .mpd source files. See MPEG-DASH plugin for details.
Endscreen Configured with API call. Adds support for an recommendation end screen. The end screen is displayed at the end of a single video or after the last item of a playlist. It contains a grid view of recommended videos (if available). See Endscreen plugin for details.
Float-on-Scroll float-on-scroll
object
Turns the player into a floating container that positions the player in the lower left corner (site and position configurable with css) when user scrolls past the player. See Float-on-Scroll plugin for details.
Frame-Accurate Seeking fas
object
Adds support for seeking to specific frames and SMPTE timecodes. See Frame-Accurate Seeking plugin for details.
Google Analytics: GA4 ga
object
Allows you to track your media content in Google Analytics. See Google Analytics: GA4 plugin for details.
Gemius Analytics gemius
object
Allows you to track your media content in Google Analytics. See Gemius Analytics plugin for details.
HLS hls
object
Implements an HLS loader plugin, which is capable of playing .m3u8 source files. See HLS plugin for details.
HTML Subtitles subtitles
array
Lists subtitle tracks. Default: none See HTML Subtitles plugin for details.
Keyboard keyboard
object
Loads the accessibility helper keyboard plugin, which also allows searching with keyboard shortcuts at pre-defined intervals. See Keyboard plugin for details.
Playlist playlist
array and others
Ads support for playlists. Must be initialized with flowplayer/playlist src type. See Playlist plugin for details.
Quality Selection qsel
object
Implements a quality-selector menu where the different quality levels of a stream are offered for manual selection. See Quality Selection plugin for details.
Share share
object
Adds a share button to offer social media linking. See Share plugin for details.
Speed Selection speed
object
Adds a playback speed selector menu item with configurable slow/fast playback options. See Speed plugin for details.
Preview Thumbnails thumbnails
object
Adds WebVTT-based thumbnail support. See Preview Thumbnails plugin for details.
Wowza Video Platform Integration ovp
object
Allows for integration of videos and live streams you've created in Wowza Video. See Wowza Video Platform Integration plugin for details.

Install a plugin

To load a plugin when embedding the player using our CDN, include the plugin's URL after the core player. For an example, see the Embed the player in your site section.

If you plan on using the npm approach to embed the player and plugins, see the Use npm section. For additional help with this topic, you can also review the Add the standalone player to a TypeScript project guide. This guide focuses on using npm to work with the player and plugins.

Plugin configuration

To configure a plugin after you've loaded it, you need to set a configuration object at the top level and include desired settings. For example, this is the minimum working configuration to initialize the player with the Consent plugin and an MPEG-DASH stream:

CDN examplenpm example
Copy
Copied
<script src="//cdn.flowplayer.com/releases/native/3/stable/flowplayer.min.js"></script>
<script src="//cdn.flowplayer.com/releases/native/3/stable/plugins/consent.min.js"></script>
<script src="//cdn.flowplayer.com/releases/native/3/stable/plugins/dash.min.js"></script>

const player = flowplayer("#player", { 
  src: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
  // Use plugin constant to allow all tracking, no storage
  consent: flowplayer.consent.tracking.ALL | flowplayer.consent.storage.NONE
});
Copy
Copied
import flowplayer from "@flowplayer/player";
import "@flowplayer/player/flowplayer.css";
import Consent from "@flowplayer/player/plugins/consent";
import Dash from "@flowplayer/player/plugins/dash";

const flowplayerWithPlugins = flowplayer(Dash, Consent);

const player = flowplayerWithPlugins("#player", {
  src: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
  // Use plugin constant to allow all tracking, no storage
  consent: Consent.tracking.ALL | Consent.storage.NONE
});

Plugin constants

In the previous code snippet, you can see that some plugins allow for the usage of plugin constants during configuration. The way you leverage these constants depends on how you embed the player in your site. If we continue working with the Consent plugin, we can:

  • Allow all tracking in a CDN player implementation with the flowplayer.consent.tracking.ALL plugin constant.
  • Allow all tracking in an npm player implementation with the Consent.tracking.ALL plugin constant instead.

Plugin events

The way you handle plugin events depends on the context that you're using to embed the player in your site.

  • The CDN approach relies on the Universal Module Definition (UMD) format that uses global variables and the window object to make the Wowza Flowplayer library accessible across browsers and multiple environments.
  • When you embed the player using Node Package Manager (npm), you're leveraging the ECMAScript Modules (ESM) approach instead, where variables exist within the context of imported modules.

Handle CDN events

If you're a CDN user working with plugin events, you can utilize the plugin constants from the UMD. In this context, constants, classes, and methods are attached to the flowplayer object, and you can use an event like flowplayer.hls.events.ATTACHED to work with the plugin and your player instance:

Copy
Copied
player.on(flowplayer.hls.events.ATTACHED, (ev) => {
  console.log(ev.detail.hls.userConfig);
});

Handle npm events

If you're an npm user, you must first import the plugin, then include the constant from the plugin class itself. For example, with the same HLS ATTACHED event, you can add the HLS.events.ATTACHED event as in the following example:

Copy
Copied
import HLS from "@flowplayer/player/plugins/hls";

player.on(HLS.events.ATTACHED, (ev) => {
  console.log(ev.detail.hls.userConfig);
});