如何使用JavaScript获取卷级别?

如何使用JavaScript获取卷级别?,javascript,audio,Javascript,Audio,我使用js和WebRTC开发了一个基于web的监控系统,现在我想开发声音超过某个级别时的通知功能 我正在获取视频和音频的许可,在获得许可后,我想使用声音通知功能 navigator.media设备 .getUserMedia({ 音频:是的, 视频:真的 }) 。然后(流=>{ //在#localVideo元素中显示本地视频 localVideo.srcObject=流; //添加要发送到连接对等方的流 pc.addStream(stream); //调用函数进行声音检查 },onError);

我使用js和WebRTC开发了一个基于web的监控系统,现在我想开发声音超过某个级别时的通知功能

我正在获取视频和音频的许可,在获得许可后,我想使用声音通知功能

navigator.media设备
.getUserMedia({
音频:是的,
视频:真的
})
。然后(流=>{
//在#localVideo元素中显示本地视频
localVideo.srcObject=流;
//添加要发送到连接对等方的流
pc.addStream(stream);
//调用函数进行声音检查
},onError);
您可以使用此代码

<!DOCTYPE html>
<html>
<head>
<script>
  navigator.mediaDevices.getUserMedia({ audio: true }).then(function(stream) {
  audioContext = new AudioContext();
  analyser = audioContext.createAnalyser();
  microphone = audioContext.createMediaStreamSource(stream);
  javascriptNode = audioContext.createScriptProcessor(2048, 1, 1);
  analyser.smoothingTimeConstant = 0.8;
  analyser.fftSize = 1024;
  microphone.connect(analyser);
  analyser.connect(javascriptNode);
  javascriptNode.connect(audioContext.destination);
  javascriptNode.onaudioprocess = function() {
      var array = new Uint8Array(analyser.frequencyBinCount);
      analyser.getByteFrequencyData(array);
      var values = 0;

      var length = array.length;
      for (var i = 0; i < length; i++) {
        values += (array[i]);
      }

      var average = values / length;

      if(Math.round(average)>15)
      {
        console.log(Math.round(average));
        document.getElementById("lvl").innerHTML = Math.round(average)-10;
      }
    
  }
  })
  .catch(function(err) {
    /* handle the error */
});
</script>
</head>
<center><p id="lvl" style="font-size:200px"></p><center>
</html>

navigator.mediaDevices.getUserMedia({audio:true}).then(函数(流){
audioContext=新的audioContext();
Analyzer=audioContext.createAnalyzer();
麦克风=audioContext.createMediaStreamSource(流);
javascriptNode=audioContext.createScriptProcessor(2048,1,1);
分析仪.平滑时间常数=0.8;
Analyzer.fftSize=1024;
麦克风。连接(分析仪);
connect(javascriptNode);
连接(audioContext.destination);
javascriptNode.onaudioprocess=function(){
var阵列=新UINT8阵列(分析仪频率BINCOUNT);
分析仪。GetByTefFrequencyData(阵列);
var值=0;
var length=array.length;
对于(变量i=0;i15)
{
console.log(数学四舍五入(平均));
document.getElementById(“lvl”).innerHTML=Math.round(average)-10;
}
}
})
.catch(函数(err){
/*处理错误*/
});

复制并使其成为HTML文件,然后在chrome中打开它并发出一些声音。您将了解它是如何工作的,如果它与您需要的相同,请从第5行复制函数,并将其设置为一个单独的函数,然后调用此函数。此函数是您的代码


希望它对您有用

音量级别有最小值和最大值吗?onaudioprocess现在不推荐使用。我们现在能用的。