Разбор блоков из фрагментированного сегмента ISOBMFF, загружаемого с помощью mp4box.js - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь прочитать ответ HTTP и добавить его в файл mp4box.Затем я хочу проанализировать весь файл, чтобы получить все поля moof + mdat.По какой-то причине, хотя тело ответа имеет 16 блоков (8 наборов moof + mdat), я только когда-либо вижу 2 блока в своем файле ISO-файла mp4box.

Я слушаю событие данных из интерфейса http.Затем я пытаюсь передать arrayBuffer в буфер MSE ISOFile, как описано в readme mp4box.js.По какой-то причине я вижу только 2 поля, когда вижу 16.

const request = require('request');
var MP4Box = require('../../dist/mp4box.all.js');
const now = Math.trunc((new Date() / 8000));
console.log(now);
const m4s = MP4Box.createFile();

request(`https://livesim.dashif.org/livesim-chunked/chunkdur_1/ato_7/testpic4_8s/A48/${now}.m4s`,{encoding:null})//this response is chunked from the server
.on('response',function(response){
    console.log(response.statusCode);
    console.log(response.headers['content-type']);
    response.on('data',function(chunk){
        let ab = chunk.buffer;
        ab.fileStart = 0;
        console.log('got chunk: ' + ab.byteLength + ' bytes');//8 chunks of ~5,000 bytes which are moof+mdat pairs of audio
        m4s.appendBuffer(ab);
    });
    response.on('end',function(){
        console.log('body complete');
        console.log('found ' + m4s.boxes.length + ' boxes'); //result: 2 when it should be 16
    });
});```

I'm expecting to see 8 chunks (which are pairs of moof+mdat boxes) in the m4s object?
...