8feeafbf00
When the HTML5 preload attribute is set to 'none' or when using Safari (even when the preload attribute is not 'none'), the video does not resume playing after the quality is changed using the quality selector menu. The quality selector plugin was listening for the 'loadeddata' event in order to know when to resume playback, but the 'loadeddata' event does not fire when the preload attribute is set to 'none', and Safari does not fetch enough data to emit a 'loadeddata' event. |
||
---|---|---|
docs/demo | ||
src | ||
tests | ||
.eslintrc.json | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
CHANGELOG.md | ||
Gruntfile.js | ||
LICENSE | ||
package.json | ||
README.md |
Silvermine VideoJS Quality/Resolution Selector
What is it?
A plugin for videojs versions 6+ that adds a button to the control bar which will allow the user to choose from available video qualities or resolutions.
How do I use it?
There are three primary steps to use this plug-in: (1) including,
(2) providing sources, and (3) adding the component the to
controlBar
. Please see the following for information on each
step.
Including/Requiring
Using <script>
tag
The minified JS file can come from a downloaded copy or a CDN. When including
it, make sure that the <script>
tag for the plugin appears after the
include for video.js (note that this plugin will look
for videojs
at window.videojs
).
There is an example of this in
docs/demo/index.html
.
From local file:
<script src="./path/to/video.min.js"></script>
<script src="./path/to/silvermine-videojs-quality-selector.min.js"></script>
From unpkg
:
<script src="./path/to/video.min.js"></script>
<script src="https://unpkg.com/silvermine-videojs-quality-selector/dist/js/silvermine-videojs-quality-selector.min.js"></script>
Using require
When using NPM/Browserify, first install the plugin.
npm install --save silvermine-videojs-quality-selector
For videojs
to use the plug-in, the plugin needs to register itself with the instance of
videojs
. This can be accomplished by:
var videojs = require('videojs');
// The following registers the plugin with `videojs`
require('silvermine-videojs-quality-selector')(videojs);
Providing video sources
Sources can be provided with either the <source>
tag or via the src
function on the
instance of a video.js
player.
Using <source>
<video id="video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="268" data-setup='{}'>
<source src="https://example.com/video_720.mp4" type="video/mp4" label="720P">
<source src="https://example.com/video_480.mp4" type="video/mp4" label="480P" selected="true">
<source src="https://example.com/video_360.mp4" type="video/mp4" label="360P">
</video>
Using player.src()
player.src([
{
src: 'https://example.com/video_720.mp4',
type: 'video/mp4',
label: '720P',
},
{
src: 'https://example.com/video_480.mp4',
type: 'video/mp4',
label: '480P',
selected: true,
},
{
src: 'https://example.com/video_360.mp4',
type: 'video/mp4',
label: '360P',
},
]);
Adding to the player
There are at least two ways to add the quality selector control to the player's control
bar. The first is directly adding it via addChild
. For example:
player.controlBar.addChild('QualitySelector');
The second option is to add the control via the player's options, for instance:
var options, player;
options = {
controlBar: {
children: [
'playToggle',
'progressControl',
'volumePanel',
'qualitySelector',
'fullscreenToggle',
],
},
};
player = videojs('video_1', options);
How do I contribute?
We genuinely appreciate external contributions. See our extensive documentation on how to contribute.
License
This software is released under the MIT license. See the license file for more details.