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:
<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
});
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:
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:
import HLS from "@flowplayer/player/plugins/hls";
player.on(HLS.events.ATTACHED, (ev) => {
console.log(ev.detail.hls.userConfig);
});