index.html 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>videojs-contrib-quality-levels Demo</title>
  6. <link href="/node_modules/video.js/dist/video-js.css" rel="stylesheet">
  7. <style>
  8. button.enabled {
  9. background: SkyBlue;
  10. }
  11. button.selected {
  12. background: SpringGreen;
  13. }
  14. button.disabled {
  15. background: red;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div id="fixture">
  21. </div>
  22. <div id="quality-levels">
  23. <h2>Quality Levels:</h2>
  24. </div>
  25. <ul>
  26. <li><a href="/test/debug.html">Run unit tests in browser.</a></li>
  27. <li><a href="/docs/api/">Read generated docs.</a></li>
  28. </ul>
  29. <script src="/node_modules/video.js/dist/video.js"></script>
  30. <script src="/node_modules/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
  31. <script src="/dist/videojs-contrib-quality-levels.js"></script>
  32. <script>
  33. function createQualityButton(qualityLevel, parent) {
  34. var button = document.createElement('button');
  35. var classes = button.classList;
  36. if (qualityLevel.enabled) {
  37. classes.add('enabled');
  38. } else {
  39. classes.add('disabled');
  40. }
  41. button.innerHTML = qualityLevel.id + ': ' + qualityLevel.bitrate + ' kbps';
  42. button.id = 'quality-level-' + qualityLevel.id;
  43. button.onclick = function() {
  44. var old = qualityLevel.enabled;
  45. qualityLevel.enabled = !old;
  46. button.classList.toggle('enabled');
  47. button.classList.toggle('disabled');
  48. }
  49. parent.appendChild(button);
  50. }
  51. function createPlayer(callback) {
  52. var video = document.createElement('video');
  53. video.id = 'videojs-contrib-quality-levels-player';
  54. video.className = 'video-js vjs-default-skin';
  55. video.setAttribute('controls', true);
  56. video.setAttribute('height', 300);
  57. video.setAttribute('width', 600);
  58. document.querySelector('#fixture').appendChild(video);
  59. var options = {
  60. autoplay: false,
  61. qualityLevels: {}
  62. };
  63. var url = 'https://hslsslak-a.akamaihd.net/3303963094001/3303963094001_5147618278001_5147609827001.m3u8?pubId=3303963094001&videoId=5147609827001';
  64. var type = 'application/x-mpegURL';
  65. try {
  66. window.player = videojs(video.id, options);
  67. window.player.src({
  68. src: url,
  69. type: type
  70. });
  71. callback(window.player);
  72. } catch(err) {
  73. console.log("caught an error trying to create and add src to player:", err);
  74. }
  75. }
  76. function setup(player) {
  77. player.ready(function() {
  78. var qualityLevels = player.qualityLevels();
  79. var container = document.getElementById('quality-levels');
  80. qualityLevels.on('addqualitylevel', function(event) {
  81. createQualityButton(event.qualityLevel, container);
  82. });
  83. qualityLevels.on('change', function(event) {
  84. for (var i = 0; i < qualityLevels.length; i++) {
  85. var level = qualityLevels[i];
  86. var button = document.getElementById('quality-level-' + level.id);
  87. button.classList.remove('selected');
  88. }
  89. var selected = qualityLevels[event.selectedIndex];
  90. var button = document.getElementById('quality-level-' + selected.id);
  91. button.classList.add('selected');
  92. })
  93. });
  94. }
  95. (function(window, videojs) {
  96. createPlayer(setup);
  97. })(window, window.videojs);
  98. </script>
  99. </body>
  100. </html>