Воспроизведение MediaStream с использованием AudioContext.createMediaStreamSource vs HTMLAudioElement.srcObject - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь воспроизвести MediaStream с удаленного узла (WebRTC) с помощью API Web Audio.Когда я присоединяю поток к элементу audio, используя audio.srcObject = stream, он воспроизводится нормально, но когда я пытаюсь использовать AudioContext, он вообще не воспроизводит звук (мне нужно избегать тега audio/video HTML).

Это произведение работает:

<audio controls>
<script>
   const audioEl = document.getElementsByTagName('audio')[0];
   audioEl.srcObject = MY_STREAM;
   audioEl.play();
</script>

Это не так:

const audioContext = new AudioContext();
const sourceNode = audioContext.createMediaStreamSource(MY_STREAM);
sourceNode.connect(audioContext.destination);
// Trying even 'audioContext.resume()' after user gesture with no luck

Что странного в том, что когда MY_STREAM это мой микрофон , то этоиграет хорошо для Web Audio API (я слышу отзывы от моего микрофона).

Таким образом, можно предположить, что между MediaStream и микрофоном, который я получаю из соединения с WebRTC, есть что-то другое, но почему он воспроизводится для простого тега HTML audio?

1 Ответ

0 голосов
/ 20 февраля 2019

Как показывает @ jib , это ошибка Chrome.
Я открыл новый выпуск , чтобы сообщить им об этом.

Iмне показалось, что я нашел обходной путь, просто назначив этот MediaStream для srcObject фиктивного HTMLAudioElement,

new Audio().srcObject = mediaStream;

, но каким-то образом, при тестировании на моем локальном хосте, он не сохранялся во времени, в то время как в эта скрипка так и есть.

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

Добавьте к этому другие нефиксированные ошибки в области, которые заставляют меня думать о ложных срабатываниях и в целом, я боюсь, что нет правильного решения, кроме как ждать их исправленияэто ...

...