WebRTC через API веб-аудио без звука в Google Chrome - PullRequest
0 голосов
/ 04 февраля 2019

Я беру mediaStream из WebRTC и выполняю некоторую обработку аудио и мониторинг.Он работает на FireFox, но на Chrome ничего не говорит.

Здесь приведена упрощенная версия с одним параметром gainNode в качестве примера.

    const AudioContext = window.AudioContext || window.webkitAudioContext;
    let myAudioCtx = new AudioContext();
    let mySource = myAudioCtx.createMediaStreamSource(stream);
    let gainNode = myAudioCtx.createGain();
    gainNode.gain.value = 2;
    mySource.connect(gainNode);
    gainNode.connect(myAudioCtx.destination);

Принимая во внимание, что если я вместо этого назначаю поток непосредственно srcObject, я слышу звук.

Похоже, что createMediaStreamSource () не возвращает никакого звука, потому что мой мониторинг показывает тишину.Однако, если я назначаю поток из WebRTC для srcObect, а также запускаю через мой мониторинг, тогда мониторинг обнаруживает звук.

myAudioCtx.state говорит «выполняется»

Не могу придумать, куда еще обратитьсяпроверять.Любая помощь будет оценена

1 Ответ

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

Нашел решение после хорошего ночного сна и снова посмотрел документы MDN.

Вы должны назначить поток для аудиоэлемента

audio.srcObject = stream;

, но затем вам нужно отключить звук на выходе.поэтому он не идет напрямую к динамикам

audio.muted = true;

, это не мешает работе веб-аудио

const AudioContext = window.AudioContext || window.webkitAudioContext;
let myAudioCtx = new AudioContext();
let mySource = myAudioCtx.createMediaStreamSource(stream);
let gainNode = myAudioCtx.createGain();
gainNode.gain.value = 2;
mySource.connect(gainNode);
gainNode.connect(myAudioCtx.destination);

Это работает в Chrome, Safari и Firefox.

...