我正在尝试通过 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 的一些后续版本中被无意中破坏了。谁能证实这一点或建议如何克服这个问题?