如何避免播放正在录制的声音

时间:2014-05-21 18:38:46

标签: javascript html5-audio audiocontext

我正在谈论反馈 - 当你创建一个简单的javascript应用程序打开用户的流并读取频率分析(或其他任何内容)时,它会将所有收到的数据传回Google Chrome中的耳机和歌剧。 Firefox在大多数情况下是静默的,并随机创建了一个混乱不稳定的反馈 - 它也会在几秒钟后关闭流。一般来说,这件事在Firefox中还不起作用。

我创建了fiddle。如果您的浏览器不支持它,您只会在我认为的控制台中出错。

代码的关键部分是当用户接受麦克风访问请求时调用的函数:

        //Not sure why do I do this
        var inputPoint = context.createGain();

        // Create an AudioNode from the stream.
        var source = context.createMediaStreamSource(stream);
        source.connect(inputPoint);        

        //Analyser - this converts raw data into spectral analysis
        window.analyser = context.createAnalyser();
        //Mores stuff I know nothing about
        analyser.fftSize = 2048;
        //Sounds much like connecting nodes in MatLab, doesn't it?
        inputPoint.connect(analyser);
        analyser.connect(context.destination);
        ///THIS should probably make the sound silent (gain:0) but it doesn't
        var zeroGain = context.createGain();
        zeroGain.gain.value = 0.0;
        //More connecting... are you already lost which node is which? Because I am.
        inputPoint.connect(zeroGain);
        zeroGain.connect(context.destination);

零收益的想法不是我的,我从简单的sound recorder demo偷了它。但对他们有用的东西并不适合我。 这个演示在Firefox中也没有问题,就像我一样。

1 个答案:

答案 0 :(得分:0)

in function mediaGranted(stream){...

评论出来 .. 小提琴行#46://analyser.connect(context.destination); ..

更多信息https://mdn.mozillademos.org/files/5081/WebAudioBasics.png 很好的演示:http://mdn.github.io/voice-change-o-matic/