Advertisement
Guest User

Untitled

a guest
Jun 25th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. require("videojs-quality-picker");
  2.  
  3. var dash = "";
  4. var player = videojs('s3bubble-video');
  5.  
  6. player.ready(function() {
  7.     player.src({
  8.         src: 'http://yt-dash-mse-test.commondatastorage.googleapis.com/media/motion-20120802-manifest.mpd',
  9.         type: 'application/dash+xml'
  10.     });
  11.  
  12.     player.overlay({
  13.         debug: true,
  14.         overlays: [{
  15.             content: buildOverlayHTML("<h1>test overlay</h1>"),
  16.             align: "top-left",
  17.             start: "pause",
  18.             end: "play"
  19.         }]
  20.     });
  21.  
  22.     player.play();
  23.     setTimeout(initializeDashPlayer, 2000);
  24.     setTimeout(makeQualityListPayload, 2000);
  25. });
  26.  
  27. player.qualityPickerPlugin();
  28. document.addEventListener('keyup', togglePlayStateOnEnter, false);
  29.  
  30.  
  31. function togglePlayStateOnEnter(e) {
  32.     if (e.keyCode == 13) {
  33.         if (dash.isPaused()) {
  34.             player.play();
  35.         } else {
  36.             player.pause();
  37.         }
  38.     }
  39. }
  40.  
  41. function buildOverlayHTML(message) {
  42.     let e = document.getElementById("s3bubble-video");
  43.     let overlay = "";
  44.     overlay += '<div style="background-color: rgba(0,0,0, 0.5);';
  45.     overlay += `width:${parseInt(e.offsetWidth)}px; height:${parseInt(e.offsetHeight)}px;"`;
  46.     overlay += `>${message}</div>`;
  47.  
  48.     return overlay;
  49. }
  50.  
  51. function makeQualityListPayload() {
  52.    let bitrates = getIndexedPlayerBitrateList();
  53.    let qualities = bitrates.map(convertBitrateToQuality);
  54.    addAutoQuality(qualities);
  55.    let payload = createPayloadFromQualities(qualities);
  56.    setQualityLoadListener(payload);
  57. }
  58.  
  59. function initializeDashPlayer() {
  60.    dash = player.dash.mediaPlayer;
  61. }
  62.  
  63. function getIndexedPlayerBitrateList() {
  64.    let rawBitrates = dash.getBitrateInfoListFor("video");
  65.    let formattedBitrates = [];
  66.  
  67.    rawBitrates.forEach((item, index) => {
  68.        formattedBitrates.push([item, index]);
  69.    });
  70.  
  71.    return formattedBitrates;
  72. }
  73.  
  74. function convertBitrateToQuality(bitrate) {
  75.    let quality = {};
  76.    let level = bitrate[0];
  77.    let index = bitrate[1];
  78.    console.log(level);
  79.    console.log(index);
  80.    quality.id = index;
  81.    quality.selected = quality.id === dash.getQualityFor("video");
  82.    quality.label = level.height + "p"; //480p, 720p, etc
  83.  
  84.    return quality;
  85. }
  86.  
  87. function addAutoQuality(qualities) {
  88.    let auto = {
  89.        id: -1,
  90.        label: "auto",
  91.        selected: dash.getAutoSwitchQualityFor("video")
  92.    };
  93.  
  94.    qualities.push(auto);
  95. }
  96.  
  97. function createPayloadFromQualities(qualities) {
  98.    let payload = {
  99.        qualityData: {video: qualities},
  100.        qualitySwitchCallback: switchQuality
  101.    };
  102.  
  103.    return payload;
  104. }
  105.  
  106. function setQualityLoadListener(payload) {
  107.    player.tech_.trigger('loadedqualitydata', payload);
  108. }
  109.  
  110. function switchQuality(qualityId, trackType) {
  111.     let auto = qualityId == -1;
  112.    dash.setAutoSwitchQualityFor("video", auto);
  113.    if (!auto) {
  114.         dash.setQualityFor("video", qualityId);
  115.    }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement