J'ai deux vidéos que j'essaie de lire en utilisant MediaSource, mais une seule fonctionne. Les deux ont les codecs définis comme avc1.4d401f et mp4a.40.2, mais tandis que l'un d'eux joue très bien, l'autre ferme le MediaSource dès que j'appelle le appendBuffer sur le SourceBuffer. Les bits correspondants du code sont les suivants:MediaSource fermé après appendBuffer
var mainSource;
var mimeCoded = 'video/mp4; codecs="avc1.4d401f,mp4a.40.2"';
mainSource = new MediaSource();
var sourceBuffer;
mainSource.addEventListener('sourceopen',() => {
console.log('readystate', mainSource.readyState);
var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('get', 'main.mp4');
xhr.addEventListener('load', (e) => {
sourceBuffer = mainSource.addSourceBuffer(mimeCoded);
sourceBuffer.mode = 'sequence';
sourceBuffer.addEventListener('updateend', onUpdateEnd);
sourceBuffer.appendBuffer(e.target.response);
console.log('updating', sourceBuffer.updating);
});
xhr.send();
});
vid.src = URL.createObjectURL(mainSource);
onUpdateEnd = function()
{
console.log('readystate2', mainSource.readyState, sourceBuffer.updating);
vid.play();
sourceBuffer.removeEventListener('updateend', onUpdateEnd);
};
Lorsque vous utilisez l'une des vidéos, les deux journaux sur mainSource.readyState
volonté sortie open
, mais avec un autre, il montre closed
sur le second journal (et par conséquent des erreurs sur vid.play()
) . Je suis déjà à court d'idées sur ce qui se passe, donc toute aide est appréciée.