123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>videojs-contrib-quality-levels Demo</title>
- <link href="/node_modules/video.js/dist/video-js.css" rel="stylesheet">
- <style>
- button.enabled {
- background: SkyBlue;
- }
- button.selected {
- background: SpringGreen;
- }
- button.disabled {
- background: red;
- }
- </style>
- </head>
- <body>
- <div id="fixture">
- </div>
- <div id="quality-levels">
- <h2>Quality Levels:</h2>
- </div>
- <ul>
- <li><a href="/test/debug.html">Run unit tests in browser.</a></li>
- <li><a href="/docs/api/">Read generated docs.</a></li>
- </ul>
- <script src="/node_modules/video.js/dist/video.js"></script>
- <script src="/node_modules/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
- <script src="/dist/videojs-contrib-quality-levels.js"></script>
- <script>
- function createQualityButton(qualityLevel, parent) {
- var button = document.createElement('button');
- var classes = button.classList;
- if (qualityLevel.enabled) {
- classes.add('enabled');
- } else {
- classes.add('disabled');
- }
- button.innerHTML = qualityLevel.id + ': ' + qualityLevel.bitrate + ' kbps';
- button.id = 'quality-level-' + qualityLevel.id;
- button.onclick = function() {
- var old = qualityLevel.enabled;
- qualityLevel.enabled = !old;
- button.classList.toggle('enabled');
- button.classList.toggle('disabled');
- }
- parent.appendChild(button);
- }
- function createPlayer(callback) {
- var video = document.createElement('video');
- video.id = 'videojs-contrib-quality-levels-player';
- video.className = 'video-js vjs-default-skin';
- video.setAttribute('controls', true);
- video.setAttribute('height', 300);
- video.setAttribute('width', 600);
- document.querySelector('#fixture').appendChild(video);
- var options = {
- autoplay: false,
- qualityLevels: {}
- };
- var url = 'https://hslsslak-a.akamaihd.net/3303963094001/3303963094001_5147618278001_5147609827001.m3u8?pubId=3303963094001&videoId=5147609827001';
- var type = 'application/x-mpegURL';
- try {
- window.player = videojs(video.id, options);
- window.player.src({
- src: url,
- type: type
- });
- callback(window.player);
- } catch(err) {
- console.log("caught an error trying to create and add src to player:", err);
- }
- }
- function setup(player) {
- player.ready(function() {
- var qualityLevels = player.qualityLevels();
- var container = document.getElementById('quality-levels');
- qualityLevels.on('addqualitylevel', function(event) {
- createQualityButton(event.qualityLevel, container);
- });
- qualityLevels.on('change', function(event) {
- for (var i = 0; i < qualityLevels.length; i++) {
- var level = qualityLevels[i];
- var button = document.getElementById('quality-level-' + level.id);
- button.classList.remove('selected');
- }
- var selected = qualityLevels[event.selectedIndex];
- var button = document.getElementById('quality-level-' + selected.id);
- button.classList.add('selected');
- })
- });
- }
- (function(window, videojs) {
- createPlayer(setup);
- })(window, window.videojs);
- </script>
- </body>
- </html>
|