Web MediaRecorder API не может записывать аудио и видео одновременно

Я пытался записывать видео и аудио с помощью API MediaRecorder, но он позволял мне записывать только мой экран без звука. Нужно ли мне иметь два отдельных потока и объединять их в один? Но почему в этом случае можно установить { audio: true, video: true } в методе navigator.mediaDevices.getDisplayMedia()?

Это мой код:

async function startRecording() {
  let mimeType = "video/webm;codecs=vp9";

  try {
    const mediaDevices = navigator.mediaDevices as any;
    const stream = await mediaDevices.getDisplayMedia({
      audio: true,
      video: true,
    });

    const options = {
      mimeType: mimeType,
      bitsPerSecond: 500000,
    };

    let recorder = new MediaRecorder(stream, options);

    const chunks = [];
    recorder.ondataavailable = (e) => {
      if (e.data.size > 0) {
        chunks.push(e.data);
      } else {
        console.log("no data to push");
      }
    };

    recorder.onstop = (e) => {
      const completeBlob = new Blob(chunks, {
        type: chunks[0].type
      });
      stream.getTracks().forEach((track) => {
        track.stop();
        console.log(track);
      });

      setVideoData({
        recorded: true,
        localVideoURL: URL.createObjectURL(completeBlob),
        blob: completeBlob,
      });
    };

    recorder.start();

  } catch (error) {
    console.log(error);
  }
}

Любые указатели с благодарностью.


person Alex Gogl    schedule 22.05.2020    source источник


Ответы (1)


Большинство браузеров не поддерживают захват звука с помощью мультимедийных средств отображения. Даже в вариантах Chrome и Chromium поддержка захвата зависит от ОС.

https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#Browser_compatibility

person Brad    schedule 22.05.2020