AudioElementMediaStream to MediaStreamSource

WebAudioApi AudioContext может создать источник из MediaStreamSource:

  const {audioCtx} = this;
  const source = audioCtx.createMediaStreamSource(mediaStream);
  source.connect(audioCtx.destination);
  source.start(audioCtx.currentTime);

Аудио-элемент поддерживает доступный mediaStream с помощью captureStream ():

  const audio = new Audio();
  audio.src = src;
  const mediaStream = audio.captureStream();

Как вы можете видеть в документах, оба потока - аудиозахваченный поток, а также параметр потока для createAudioStreamSource - MediaStreams, почему он не работает. Где проблема, как я могу это исправить?

Редактировать:

Проблема в том, что броузер выдает эту ошибку:

× Необработанный отказ (InvalidStateError): не удалось выполнить "createMediaStreamSource" для "BaseAudioContext": MediaStream не имеет звуковой дорожки

1 ответ

Вы прикрепили свой 'src' к своему аудиоэлементу, но не проверяли, полностью ли загружен контент с сервера, прежде чем действовать на нем. Вы не можете захватить поток, если он еще не завершил загрузку в браузер, например, если вы не можете отобразить источник изображения, пока он полностью не появится в браузере. Любой процесс против источника вы должны будете поместить в обработчик загрузки. (И вы можете использовать <source> элемент в вашем <audio> элемент вместо.)

Другие вопросы по тегам