Как стримить getDisplayMedia быстрее, используя webm и blob - PullRequest
0 голосов
/ 24 декабря 2018

Я работаю над приложением webrtc для потоковой передачи getDisplayMedia () для захвата всего экрана и передачи по сети нескольким зрителям.

Я могу правильно отобразить его с помощью простого создания BLOB-объектов и добавления этогов качестве источника видео, но это медленнее.Итак, для более быстрого решения я попытался MediaSource()

Теперь я всегда получаю исключение как Uncaught DOMException: Failed to set the 'timestampOffset' property on 'SourceBuffer': This SourceBuffer has been removed from the parent media source. после первого раза и в первый раз также нет видео.

Вот мойфрагмент:

var video = document.getElementById('video');
var socket = io("http://localhost:3000");
var mediaSource = new MediaSource(),
mediaBuffer,
// init duration of 0 seems fine
duration = 0;
video.src = window.URL.createObjectURL(mediaSource);

mediaSource.addEventListener('sourceopen', function(e) {
    mediaBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vp8, vorbis"')
    mediaBuffer.addEventListener('update', function() {
        // wait for mediaBuffer update to fire before setting the new duration
        duration = video.duration;
        console.log('updated');
    });

    mediaBuffer.addEventListener('updateend', function() {
        duration = 0;
        console.log('updateend');

    });

}, false);

socket.on('transfer', function (data) {
    mediaBuffer.timestampOffset = duration;
    mediaBuffer.appendBuffer(new Uint8Array(data));
    video.play();
});

и код на стороне сервера: socket.broadcast.emit('transfer', data);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...