我正在开发一个浏览器语音通信应用程序,所以问题是-我需要对麦克风输入流施加一些效果。我可以通过这种方式进行测试,以便对话者可以听到正弦的声音:
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)-也没有办法。因此,如果可能的话,应在此处使用哪种方法向流数据添加一些音频过滤器?谢谢。
答案 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可以帮助您解决这些问题,并提供许多示例。