我如何从AudioContext获得麦克风数据



所以,我刚刚发现你可以使用javascript记录声音。太棒了!

我立即创建了一个新的项目来做我自己的事情。然而,当我打开示例脚本的源代码时,我发现根本没有解释性注释。

我开始在谷歌上搜索,发现了一篇关于AudioContext的长而有趣的文章,它根本没有意识到录音(它只提到remixinf声音)和MDN文章,包含了所有的信息-成功地隐藏了我要找的那个。

我也知道现有的框架处理的事情(不知何故,也许)。但如果我想要一个录音机,我会下载一个——但我真的很好奇这东西是如何工作的。

现在,我不仅不熟悉的编码部分的东西,我也很好奇整个事情将如何工作-我是否得到强度在特定的时间?就像任何示波器一样?或者我已经得到了样品的光谱分析?

所以,只是为了避免任何错误:请,谁能解释最简单和最直接的方式来获得输入数据使用上述API,并最终提供解释性注释的代码?

如果你只是想使用麦克风输入作为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();
}

最新更新