尝试为 WebRTC 音频上下文添加麦克风音量控制时,Firefox 37 抛出错误

Firefox 37 throwing error when trying to add microphone volume control for WebRTC audio context

自 firefox 37 以来我无法将音量控制添加到输入(麦克风),我收到错误消息:

IndexSizeError: Index or size is negative or greater than the allowed amount

它在 Chrome 上工作正常。

这是代码示例:

var audioContext    = new (window.AudioContext || window.webkitAudioContext)(); // define audio context
var microphone      = audioContext.createMediaStreamDestination();
var gain            = audioContext.createGain();
var speaker         = audioContext.createMediaStreamDestination(gain);
gain.gain.value = 1;
microphone.connect(gain);
gain.connect(speaker);

此处抛出错误:

microphone.connect(增益);

奇怪的是,它每晚都可以在 firefox 上运行。

此错误与此 Whosebug 类似:

相关link: link on Whosebug

你不应该用这个做麦克风吗?

 var microphone      = audioContext.createMediaStreamSource();

而不是这个

 var microphone      = audioContext.createMediaStreamDestination();

麦克风不是目的地。这是一个来源。

首先我觉得应该是

var microphone      = audioContext.createMediaStreamSource(stream);

这里的stream是麦克风音频流。查找更多信息 here

另请查看此 demo with elaboration here。它与您正在尝试的类似。将 createMediaElementSource 替换为 createMediaStreamSource 即可。