MSE Safari

by dustinkerstein

HTML

<video id="PanoMoment"></video>

CSS

html, body {
  margin: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background-color: #000;
}

#PanoMoment {
  margin: 0;
  width: 100%;
  height: 100%;
}

JavaScript

var container, videoInitialized = false,
      videoSeeked = false,
      isUserInteracting = false;

    var sourceBuffer;
    var frameRate;
    var index = 0;
    var segments = [];
    var ms = new MediaSource();
    var videoBits, arrayOfBytes, chunk, file;

    var video = document.querySelector('video');
    video.src = window.URL.createObjectURL(ms);
    ms.addEventListener('sourceopen', onMediaSourceOpen);

    getData('sd_dash.mpd');

    function animate() {
      window.requestAnimationFrame(render);
    }

    function render() {
      window.requestAnimationFrame(render);
      //if (video.readyState === video.HAVE_ENOUGH_DATA) {
        //nextSegment(index);
     // }

    }
    
    
    document.addEventListener('keypress', onKey, false);

    function onKey (e) {
    	var key = e.key;
      switch (key) {
          case "[":
              index = (index - 2) % segments.length;
              if (index < 0) index = segments.length -1;
              nextSegment(index);
              break;
          case "]":
              index = (index + 2) % segments.length;
              nextSegment(index);
              break;
          case "1":
          		console.log(ms.sourceBuffers)
              var i;
              for (i = 0; i < sourceBuffer.buffered.length; i++) { 
                console.log("BEFORE start: " + sourceBuffer.buffered.start(i) + " end: " + sourceBuffer.buffered.end(i))
              }
          	  //sourceBuffer.abort();
              //sourceBuffer.remove(0,segments.length);
              sourceBuffer.changeType('video/mp4; codecs="avc1.640033"')
              var i;
              for (i = 0; i < sourceBuffer.buffered.length; i++) { 
                console.log("AFTER start: " + sourceBuffer.buffered.start(i) + " end: " + sourceBuffer.buffered.end(i))
              }
              
          		break;
      }
    }

    function videoInit(initBytes) {
      videoBits = initBytes;
      
      
     /*  chunk = initBytes.slice(0,...