Почему мой BLOB-объект отображает только первый экземпляр моего MediaRecorder l oop in javascript? - PullRequest
0 голосов
/ 20 апреля 2020

Я использую blob для потоковой передачи своей веб-камеры через сервер с помощью socket.io. Однако при локальном тестировании воспроизводится первый экземпляр этого «l oop», а другие экземпляры не воспроизводятся.

Когда я настраиваю время (скажем, 1 секунда из 5 секунд), происходит то же самое, воспроизводится вся первая запись (большой двоичный объект), но только первая.

Никаких ошибок не происходит, и я просто не могу понять, что происходит. Я вижу, как URL создается в консоли, поэтому я знаю, что создается новый BLOB-объект, но видео sr c просто не будет его читать и воспроизводить (кроме первого, каждый раз, когда я обновляю sh браузер). ).

Ваша помощь ценится и большое спасибо!

HTML:

<video id="video" autoplay></video>

Клиент:

navigator.mediaDevices.getUserMedia(constraints)
.then(stream => {
    var recorder = new MediaRecorder(stream);
    recorder.ondataavailable = event => {
        blob = event.data;
        url = URL.createObjectURL(blob);
        socket.emit('sendBlobToServer', url);
    };
    recorder.start(1000);
});

socket.on('sendBlobToClient', function (data){ 
    url = data;
    document.getElementById('video').src = url;

});

Сервер:

socket.on('sendBlobToServer', function (data){
    url = data;
    io.emit('sendBlobToClient', url);
});

В инструментах разработчика он, кажется, падает.

...