Javascript web音频rms未读取流

Javascript web音频rms未读取流,javascript,html,audio,web-audio-api,Javascript,Html,Audio,Web Audio Api,我开发了一个网页,可以收听麦克风,计算均方根(平均响度),并更改网页上文本区域的颜色 我找到了,但示例使用了振荡器,我不确定如何用麦克风流替换它 然后我在上找到了一篇文章,我使用了一些代码来捕获音频以供实时使用 我已经有一些代码可以从流计算rms,但问题是麦克风从不发送任何音频。通过使用控制台日志,我发现代码在第8行起作用,但在第11行不起作用,这恰好是在调用navigator.mediaDevices.getUserMedia 我使用的代码如下所示,您可以在上面查看文件: +函数(){ var

我开发了一个网页,可以收听麦克风,计算均方根(平均响度),并更改网页上
文本区域的颜色

我找到了,但示例使用了振荡器,我不确定如何用麦克风流替换它

然后我在上找到了一篇文章,我使用了一些代码来捕获音频以供实时使用

我已经有一些代码可以从流计算
rms
,但问题是麦克风从不发送任何音频。通过使用控制台日志,我发现代码在第8行起作用,但在第11行不起作用,这恰好是在调用
navigator.mediaDevices.getUserMedia

我使用的代码如下所示,您可以在上面查看文件:

+函数(){
var errorCallback=函数(e){
log('权限被拒绝!',e);
};
var ctx=新的AudioContext()
if(navigator.mediaDevices.getUserMedia){
//在这里工作
navigator.mediaDevices.getUserMedia({audio:true},函数(流)
{
//这不管用。
//2048采样缓冲器,1通道输入,1通道输出
var processor=ctx.createScriptProcessor(2048,1,1)
变量源
console.log(“处理器”)
source=ctx.createMediaElementSource(流)
console.log(“媒体元素”)
source.connect(处理器)
source.connect(ctx.destination)
processor.connect(ctx.destination)
stream.play()
console.log(“流播放”)
//循环通过PCM数据并计算平均值
//给定2048样本缓冲区的卷
processor.onaudioprocess=函数(evt){
var input=evt.inputBuffer.getChannelData(0)
,len=input.length
,总计=i=0
,rms
而(i65){document.getElementById(“TL”).style.backgroundColor=“rgb(255,0,0)”;}

否则,如果(rmsLevel>60&&rmsLevel您对navigator.MediaDevices.getUserMedia的使用不正确-您使用的是navigator.getUserMedia回调的旧样式,而不是navigator.MediaDevices.gUM的基于承诺的方式。请查看

而不是

navigator.mediaDevices.getUserMedia({audio: true}, function (stream) {
    ...
}, errorcallback );
你应该说

navigator.mediaDevices.getUserMedia({audio: true}).then( function (stream) {
    ...
}).catch(function(err) {
  /* handle the error */
});
navigator.mediaDevices.getUserMedia({audio: true}).then( function (stream) {
    ...
}).catch(function(err) {
  /* handle the error */
});