Я работаю над приложением 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);