5

I'm trying to stream a webm video file to the client.

The first chunk (which is about 4466 bytes long) "works" (using appendBuffer), as I can see the <video> resize to the video's resolution.

Here's the error I get after appending a third time:

Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable.

The SourceBuffer's buffered property has this error:

[Exception: DOMException]

Here's the client code:

var client = new BinaryClient('ws://127.0.0.1:3080/binary-endpoint');
var ms = new MediaSource();
var sourceBuffer;
var video = document.querySelector('video');
var needUpdate = true;
var paused = true;
var busy = false;
var initial = true;

ms.addEventListener('sourceopen', function(e) {

    console.log('The MediaSource has been opened: ', e)

    sourceBuffer = ms.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
    ms.duration = 1000;

    sourceBuffer.addEventListener('updatestart', function(e) {
        busy = true;
    });

    sourceBuffer.addEventListener('updateend', function(e) {
        console.log(e);
        busy = false;
    });

    sourceBuffer.addEventListener('update', function(e) {
        console.log('Update succeeded', e)
    });

    console.log('The SourceBuffer has been created', sourceBuffer);
}, false);

client.on('stream', function(stream, meta){

    stream.on('data', function(data) {

        var DATA = new Uint8Array(data);

        if (needUpdate && !busy) {
            sourceBuffer.appendBuffer(DATA);
        }

        if (!initial && paused) {
            video.play();
            paused = false;
        }

        initial = false;
    });
});

video.src = window.URL.createObjectURL(ms);
Jelle De Loecker
  • 20,999
  • 27
  • 100
  • 142
  • 2
    I encountered this issue when my video data got mixed up. If the webm data does not get added in sequence the source buffer closes and this error comes up the next time more data is send to appendbuffer. – cnvzmxcvmcx May 07 '14 at 18:38

0 Answers0