如何从AudioContext获取麦克风数据

时间:2014-05-21 12:39:37

标签: javascript html5 audiocontext

所以,我发现你可以record sound using javascript。那太棒了!

我正在创建一个自己做点什么的新项目。但是,只要我打开示例脚本的源代码,我就发现根本没有解释性注释。

我开始谷歌搜索,发现long and interesting article about AudioContext根本没有注意到录音(它只提到remixinf声音)和MDN article,其中包含所有信息 - 成功隐藏我之后的那个。

我也知道existing frameworks处理这件事(不知何故,也许)。但是,如果我想要一个录音机我会下载一个 - 但我真的很好奇它是如何工作的。

现在,不仅我不熟悉事物的编码部分,我也很好奇整个事情是如何运作的 - 我是否在特定时间内得到强度?在任何测试仪中都很像? 或者我可以对样品进行光谱分析吗?

所以,只是为了避免任何错误:请问,是否有人可以解释使用上述API获取输入数据的最简单,最直接的方法,并最终提供带有解释性注释的代码?

1 个答案:

答案 0 :(得分:1)

如果您只是想将麦克风输入用作WebAudio API的源,以下代码对我有用。它基于:https://gist.github.com/jarlg/250decbbc50ce091f79e

navigator.getUserMedia = navigator.getUserMedia
                      || navigator.webkitGetUserMedia
                      || navigator.mozGetUserMedia;
navigator.getUserMedia({video:false,audio:true},callback,console.log);

function callback(stream){
  ctx = new AudioContext();
  mic = ctx.createMediaStreamSource(stream);
  spe = ctx.createAnalyser();
  spe.fftSize = 256;
  bufferLength = spe.frequencyBinCount;
  dataArray = new Uint8Array(bufferLength);
  spe.getByteTimeDomainData(dataArray);
  mic.connect(spe);
  spe.connect(ctx.destination);
  draw();
}