Применить эффект на микрофон - PullRequest
0 голосов
/ 01 ноября 2018

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

navigator.mediaDevices.getUserMedia({audio: true, video: false})
.then(stream => {
    var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
    var sinea = audioCtx.createOscillator();
    sinea.frequency.value = 440;
    sinea.type = "sine";
    sinea.start();
    sinea.connect(stream);
})

без эффекта. хотя никакого экштиона не выброшено. stream.connect (sinea) - тоже никак. так какой подход следует использовать здесь, чтобы добавить некоторые аудио фильтры к данным потока, если это возможно? спасибо.

1 Ответ

0 голосов
/ 01 ноября 2018

Что-то вроде (и вам придется немного поиграть с этим)

navigator.mediaDevices.getUserMedia({audio: true, video: false})
.then(stream => {
    var audioCtx = new AudioContext(); // will work in any modern browser
    var source = audioCtx.createMediaStreamSource(stream);
    var sinea = audioCtx.createOscillator();
    sinea.frequency.value = 440;
    sinea.type = "sine";
    sinea.start();
    source.connect(sinea);
    sinea.connect(audioCtx.destination);
})

Вы присоединяете поток вашего устройства к AudioContext, определяя его как MediaStreamSource. Затем вы соединяете каждый из ваших AudioNode вместе с окончательным соединением с контекстом destination для этого окончательного результата.

Тогда Документация MDN WebAudio может помочь вам разобраться с этими вещами и привести множество примеров.

...