2

所以,我刚刚发现您可以使用 javascript 录制声音。这太棒了!

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

我开始用谷歌搜索,发现一篇关于 AudioContext 的长而有趣的文章 根本不知道录音(它只提到了 remixinf 声音)和MDN 文章,其中包含所有信息 - 成功隐藏了我想要的那个。

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

现在不仅我不熟悉事物的编码部分,而且我也很好奇整个事物将如何工作 - 我是否会在特定时间获得强度?就像在任何示波器中一样?或者我可以对样品进行光谱分析吗?

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

4

1 回答 1

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();
}

于 2020-04-05T20:17:45.070 回答