0
我有兩個使用MediaSource播放的視頻,但只有其中一個有效。兩者都將編解碼器設置爲avc1.4d401f和mp4a.40.2,但是其中一個播放器很好,另一個在我調用SourceBuffer上的appendBuffer後立即關閉MediaSource。是代碼的相關位,如下所示:MediaSource在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);
};
當使用的視頻之一,上mainSource.readyState
將輸出open
兩個日誌,而是用另一個它顯示closed
在所述第二日誌(和vid.play()
因此錯誤) 。對於可能發生的事情,我已經沒有什麼想法了,所以任何幫助都是值得讚賞的。