UNPKG

videojs-per-source-behaviors

Version:

A Video.js plugin for enhancing a player with behaviors related to changing media sources.

97 lines (80 loc) 2.73 kB
<!doctype html> <html> <head> <meta charset="utf-8"> <title>videojs-per-source-behaviors Demo</title> <link href="/node_modules/video.js/dist/video-js.css" rel="stylesheet"> </head> <body> <video id="videojs-per-source-behaviors-player" class="video-js" controls></video> <p> <button id="change-source">Change the Source</button> </p> <ul> <li><a href="/test/debug.html">Run unit tests in browser.</a></li> </ul> <script src="/node_modules/video.js/dist/video.js"></script> <script src="/dist/videojs-per-source-behaviors.js"></script> <script> (function(window, videojs) { console.log('to view the current state, call `console.table(playerEvents);`'); var player = window.player = videojs('videojs-per-source-behaviors-player'); var sources = [ 'https://vjs.zencdn.net/v/oceans.mp4', 'https://archive.org/download/ElephantsDream/ed_hd.mp4', 'https://archive.org/download/Sintel/sintel-2048-stereo_512kb.mp4' ]; var currentSource = 0; var networkStates = [ 'NETWORK_EMPTY', 'NETWORK_IDLE', 'NETWORK_LOADING', 'NETWORK_NO_SOURCE' ]; var readyStates = [ 'HAVE_NOTHING', 'HAVE_METADATA', 'HAVE_CURRENT_DATA', 'HAVE_FUTURE_DATA', 'HAVE_ENOUGH_DATA' ]; var playerEvents = window.playerEvents = []; player.on(videojs.getTech('Html5').Events, function(e) { videojs.log(e.type + ' at ' + Date.now()); playerEvents.push({ networkState: networkStates[player.networkState()], readyState: readyStates[player.readyState()], time: Date.now(), type: e.type }); }); player.on(['sourceunstable', 'sourcechanged'], function(e, data) { videojs.log(e.type.toUpperCase() + ' at ' + Date.now()); playerEvents.push({ data: data, networkState: networkStates[player.networkState()], readyState: readyStates[player.readyState()], time: Date.now(), type: e.type }); }); player.perSourceBehaviors(); player.src(sources[currentSource]); var changeSourceBtn = document.getElementById('change-source'); changeSourceBtn.addEventListener('click', function(e) { var wasPlaying = !player.paused(); e.preventDefault(); currentSource++; if (currentSource === sources.length) { currentSource = 0; } videojs.log('about to change the source'); player.src(sources[currentSource]); if (wasPlaying) { player.play(); } }); }(window, window.videojs)); </script> </body> </html>