Использование MP4box.js и обратный вызов onSegment не вызывается без websocket

#javascript #mp4 #media-source #mp4box #fmp4

#javascript #МР4 #медиа-источник #mp4box #fmp4

Вопрос:

Поэтому я пытаюсь использовать MP4Box.js . На его странице readme указано: у него есть демо: «Проигрыватель, который выполняет фрагментацию на лету».

Однако обратные вызовы onSegment, которые должны передавать MSE, вообще не вызываются:

 const getVideo = async () => {
    const data = await fetch(url, { headers: { range: 'bytes=0-567139' } });
    let buff = await data.arrayBuffer();
    console.log(buff)

mp4box = MP4Box.createFile();

mp4box.onError = function(e) {
  console.log("mp4box failed to parse data.");
};

mp4box.onMoovStart = function () {
  console.log("Starting to receive File Information");
};

mp4box.onReady = function(info) {
  console.log(info.mime);
  mp4box.onSegment = (id, user, buffer ) =>  {
  setBuffer(buffer)
 }

  mp4box.setSegmentOptions(info.tracks[0].id, null, { nbSamples: 1000 });
  var initSegs = mp4box.initializeSegmentation();
  console.log(initSegs)
  mp4box.start();

};

var nextBufferStart = 0;
buff.fileStart = nextBufferStart;
nextBufferStart = mp4box.appendBuffer(buff);
mp4box.flush();

const mediaSource = new MediaSource();
const mimeCodec = 'video/mp4; codecs="avc1.640029,mp4a.40.2"';
video.src = URL.createObjectURL(mediaSource);


function sourceopen() {
    console.log('open')
    const source = mediaSource.addSourceBuffer(mimeCodec);
    const setBuffer = (buff) => {
        source.appendBuffer(buff)
    };
}
mediaSource.addEventListener('sourceopen', sourceopen, { once: true });

    
}
  

Теперь помещение этого в HTML-файл приведет к этому в консоли JavaScript:

 Starting to receive File Information
video/mp4; codecs="avc1.4d4028"; profiles="isom,iso2,avc1,iso6,mp41"
  

Но после этого ничего не происходит. Почему onSegment здесь не вызывается?