在麦克风上应用效果

时间:2018-11-01 15:13:38

标签: javascript webrtc web-audio

我正在开发一个浏览器语音通信应用程序,所以问题是-我需要对麦克风输入流施加一些效果。我可以通过这种方式进行测试,以便对话者可以听到正弦的声音:

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 :(得分:0)

类似的东西(而且您必须稍微玩一下)

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 Documentation可以帮助您解决这些问题,并提供许多示例。