Quality Selection

Implements a selection menu for the different quality levels of a multi-rendition stream (HLS and DASH).

Prerequisites for manual setup

Manual Javascript setups

Load the quality selection plugin next to the core player and the HLS plugin or the DASH plugin.

<script src="//cdn.flowplayer.com/releases/native/3/stable/flowplayer.min.js"></script>
<script src="//cdn.flowplayer.com/releases/native/3/stable/plugins/hls.min.js"></script>
<!-- or
<script src="//cdn.flowplayer.com/releases/native/3/stable/plugins/hls.min.js"></script>
<script src="//cdn.flowplayer.com/releases/native/3/stable/plugins/qsel.min.js"></script>

Player and plugins exist in different release versions. Please see the release channel documentation.

OVP managed players

You can add the feature in the Plugins section of the OVP player configurator


The plugin is configured in top level configuration under qsel namespace.

    • property
    • default
    • description
    • labels
    • []
    • index based label set

The default is to show the resolution (height component) as label. If you want to use the standard label for a certain level, omit the string for that index position. You can also restrict the selection menu to fewer variants than in the manifest by setting certain levels to false. The index is derived from the master manifest, ie if your master.m3u8 contains the following levels:


and you want a menu with these labels and available variants

800p | second | third | fifth | 200p

your qsel: {}` code would look like

var player = flowplayer('#container',
  { src  : '//edge.flowplayer.org/bauhaus.m3u8'
  , qsel : {labels:
               // index 1,  default label "800p" will be used, note the comma indicating the next level is the second one
    , "second" // index 2
    , "third"  // index 3
    , false    // index 4, hide fourth level by setting it to false , option will be hidden
    , "fifth"  // index 5
    ,          // index 6 uses default label "200p"
    , false    // index 7, do not show
    , false    // index 8, do not show



All events are exposed at the flowplayer.events dictionary.

These following events are used by the QSEL plugin:

    • property
    • description
    • When the set of underlying qualities has changed
    • When the quality should be set to something different

You can emit the events manually to preselect a quality. Please check the qsel plugin demo

For hls.js, the level index is relative to the order of the qualities starting with 0, ie 0 is always the lowest available quality.


Native HLS implementations like in iOS do not offer an API to select a quality, so the plugin won't work there.