使用网络音频录制时,createmediastreamsource输入缓冲区中的零值数据

时间:2013-06-03 13:47:49

标签: web-audio

我正在尝试通过USB麦克风录制现场音频以转换为WAV并上传到服务器。我在Windows XP上使用Chrome Canary(最新版本)。我的开发基于http://webaudiodemos.appspot.com/AudioRecorder/index.html

的示例

我看到当我激活录制时,onaudioprocess事件输入缓冲区(例如e.inputBuffer.getChannelData(0))都是零值数据。当然,在这种情况下,没有声音输出或记录。我已经通过将输入缓冲区数据替换为产生输出WAV文件中显示的音调的数据来验证其余代码。当我使用createMediaStreamSource以外的方法时,事情正常。例如,我可以使用createObjectURL并设置一个src,并成功地实时听到我现场播放的音频。我还可以加载音频文件并使用createBufferSource,在播放期间(我听到),当然,inputBuffer中包含非零数据。

由于我在网上看到的大多数网络音频录制演示都依赖于createMediaStreamSource,因此我猜测这在Chrome的后续版本中无意中被破坏了。任何人都可以证实这一点或建议如何克服这个问题吗?

1 个答案:

答案 0 :(得分:2)

它可能不是Chrome的版本。实时输入目前仍有一些高要求:

1)Windows上的输入和输出采样率必须相同 2)仅限Windows 7+ - 我不相信它可以在Windows XP上运行,这可能会让您失望。 3)输入设备必须是立体声(或> 2个声道) - 许多(如果不是大多数)USB麦克风显示为单声道设备,而Web Audio尚未与它们合作。

我当然假设我的AudioRecorder演示也不适合你。

这些限制将随着时间的推移而消除。