Не удалось выполнить 'appendBuffer' для 'SourceBuffer': этот SourceBuffer был удален из родительского источника мультимедиа - PullRequest
0 голосов
/ 03 апреля 2020

Моя цель здесь состоит в том, чтобы непрерывно рендерить видеоблок 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.

...