56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
|
/*
|
||
|
* Video.js plugin for Pannellum
|
||
|
* Copyright (c) 2015-2018 Matthew Petroff
|
||
|
* MIT License
|
||
|
*/
|
||
|
|
||
|
(function(document, videojs, pannellum) {
|
||
|
'use strict';
|
||
|
|
||
|
var registerPlugin = videojs.registerPlugin || videojs.plugin; // Use registerPlugin for Video.js >= 6
|
||
|
registerPlugin('pannellum', function(config) {
|
||
|
// Create Pannellum instance
|
||
|
var player = this;
|
||
|
var container = player.el();
|
||
|
var vid = container.getElementsByTagName('video')[0],
|
||
|
pnlmContainer = document.createElement('div');
|
||
|
pnlmContainer.style.zIndex = '0';
|
||
|
config = config || {};
|
||
|
config.type = 'equirectangular';
|
||
|
config.dynamic = true;
|
||
|
config.showZoomCtrl = false;
|
||
|
config.showFullscreenCtrl = false;
|
||
|
config.autoLoad = true;
|
||
|
config.panorama = vid;
|
||
|
pnlmContainer.style.visibility = 'hidden';
|
||
|
player.pnlmViewer = pannellum.viewer(pnlmContainer, config);
|
||
|
container.insertBefore(pnlmContainer, container.firstChild);
|
||
|
vid.style.display = 'none';
|
||
|
|
||
|
// Handle update settings
|
||
|
player.on('play', function() {
|
||
|
if (vid.readyState > 1)
|
||
|
player.pnlmViewer.setUpdate(true);
|
||
|
});
|
||
|
player.on('canplay', function() {
|
||
|
if (!player.paused())
|
||
|
player.pnlmViewer.setUpdate(true);
|
||
|
});
|
||
|
player.on('pause', function() {
|
||
|
player.pnlmViewer.setUpdate(false);
|
||
|
});
|
||
|
player.on('loadeddata', function() {
|
||
|
pnlmContainer.style.visibility = 'visible';
|
||
|
});
|
||
|
player.on('seeking', function() {
|
||
|
if (player.paused())
|
||
|
player.pnlmViewer.setUpdate(true);
|
||
|
});
|
||
|
player.on('seeked', function() {
|
||
|
if (player.paused())
|
||
|
player.pnlmViewer.setUpdate(false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
})(document, videojs, pannellum);
|