Моя цель здесь состоит в том, чтобы непрерывно рендерить видеоблок e.data
в элемент видео, например, непрерывное воспроизведение.
Код ниже выдает:
DOMException: Failed to execute 'appendBuffer' on 'SourceBuffer': This SourceBuffer has been removed from the parent media source.
Что может быть не так в этом code?
var options = {mimeType: 'video/webm'};
var mediaRecorder = new MediaRecorder(stream, options);
var player = document.querySelector("#player");
var mediaSource = new MediaSource();
player.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen, {once: true})
function sourceOpen() {
//URL.revokeObjectURL(player.src);
var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
mediaRecorder.ondataavailable = function(e) {
console.log("Data available")
if (e.data.size > 0) {
var bufferPromise = e.data.arrayBuffer();
bufferPromise.then(function(array){
sourceBuffer.appendBuffer(array);
})
}
}
}
Обновление: это решается с помощью sourceBuffer.appendBuffer(new Uint8Array(array));
, однако код все еще не работает с Chrome, он работает только с Firefox.