Динамическое изменение атрибута src видеоэлемента

#javascript #html

#javascript #HTML

Вопрос:

Я пытаюсь записать поток, возвращаемый из getUserMedia() использования MediaRecorder каждые 5 секунд, и хочу установить записанное видео на другой видеоэлемент, изменив атрибут src. Ниже приведен код, который я написал, но проблема в том, что он воспроизводится в первый раз, когда установлен src attr, но когда я изменил src attr во второй раз, он не воспроизводится.

 const socket = io();

const $videoMedia = document.querySelector("#video-media");
const $remoteVideoMedia = document.querySelector("#remote-video-media");
let mediaStream = new MediaStream();

const init = async () => {
  const constraints = {
    audio: true,
    video: true,
  };

  mediaStream = await navigator.mediaDevices.getUserMedia(constraints);
  const mediaRecorder = new MediaRecorder(mediaStream);
  mediaRecorder.start(5000);
  console.log(mediaStream);
  mediaRecorder.ondataavailable = (e) => {
    const blob = new Blob([e.data], {
      type: "video/x-matroska;codecs=avc1,opus",
    });
    console.log(blob);
    $remoteVideoMedia.setAttribute("src", window.URL.createObjectURL(blob));
  };
  $videoMedia.srcObject = mediaStream;
};

init().then(() => {
  console.log("media stream added");
});
 

Я проверил некоторые ответы stackoverflow относительно динамического изменения значения атрибута src для видеоэлемента, но ни один из них не сработал для меня.

Комментарии:

1. Как это console.log(window.URL.createObjectURL(blob)) выглядит?

2. здесь «blob: localhost:3000 / 70388f65-d9f6-492c-9f38-c33dded5355c » работает в первый раз, также воспроизводится видео, но когда код пытается присвоить значение src во второй раз, оно не воспроизводится.

3. Нет, включая «blob:» Я напрямую присваиваю возвращаемое значение, из window.URL.createObjectURL(blob) которого blob:http://localhost:3000/a048ce17-dd68-4583-9b72-f6cff3c2a8d7