Объединение потока веб-камеры с аудиотреками из коротких видео для использования в MediaRecorder - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь объединить медиапоток веб-камеры с короткими аудиотреками, полученными из видео, которые воспроизводятся один за другим на странице.Объединенный поток записывается с использованием MediaRecorder.

let newStream, audioTrack = [];
let video = this.video.current; // ref to video with audiotrack
if (video && merger) { // merger is a merged stream for MediaRecorder
  let audio = video.captureStream();
  try {
    audioTrack = audio.getAudioTracks();
    newStream = new MediaStream(audioTrack);
    merger.addStream(newStream);
  } catch (err) {
    setTimeout(() => {
      if (audioTrack.length > 0) merger.addStream(newStream);
      else this.addAudioTrack(); // call this function again
    }, 500);
  }
}

Я должен был использовать setTimeout, в противном случае аудиопоток еще не готов для захвата после того, как видео только начало воспроизводиться, и он перехватывает блокировку и застреваниев бесконечный цикл.
Полагаю, должен быть более элегантный способ обработки случаев, когда видео еще не готово захватывать аудиотреки с него, подождать, пока оно не будет готово, и немедленно извлечь аудио после этого.

...