3

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

4

1 回答 1

2

它可能不是 Chrome 的版本。实时输入现在仍然有一些很高的要求:

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

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

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

于 2013-06-04T17:18:51.817 回答