Angular 如何检查话筒的角度音量

Angular 如何检查话筒的角度音量,angular,webrtc,microphone,Angular,Webrtc,Microphone,我想检查我的话筒音量,有没有可以使用的插件或库 let mic = navigator.mediaDevices.getUserMedia({ audio: true }); mic.then(function () { alert('Mic Is Connected'); }).catch(function () { alert('Mic Is Not Connected'); }); 我正在测试我的麦克风是否通过上述代码连接,现在我需要一个实时音量计您可以使用一个名为“deciba

我想检查我的话筒音量,有没有可以使用的插件或库

let mic = navigator.mediaDevices.getUserMedia({ audio: true });
mic.then(function () {
  alert('Mic Is Connected');
}).catch(function () {
  alert('Mic Is Not Connected');
});

我正在测试我的麦克风是否通过上述代码连接,现在我需要一个实时音量计

您可以使用一个名为“decibal-meter”的软件包,它将为您提供麦克风上捕获的分贝

首先在角度项目中安装分贝计,

npm install --save decibel-meter
import DecibelMeter from 'decibel-meter'
安装后,在component.ts文件中导入分贝计,

npm install --save decibel-meter
import DecibelMeter from 'decibel-meter'
使用下面的代码,它将为您提供麦克风音量的结果

decibals = 0;
const meter = new DecibelMeter('mictest');

meter.sources.then(sources => {
  meter.connect(sources[0]);
  meter.listenTo(0, (dB, percent) => this.decibals = Number(`${dB}`) + 100);

});
通过这段代码,您将获得十进制值和那些可以存储在变量中的值,并且可以在HTML文件中访问该变量

要显示这些分贝值,您可以使用一个进度条,它看起来像声音/音量表

您还可以参考分贝计的官方文档,

需要注意的是,您的需求不是特定于角度的

audioEl.addEventListener('volumechange', (event) => {
  console.log('The volume changed.');
  // here you can use the volumechange event or the volume attribute of the element.
});
你需要得到流中的轨迹。然后获取这些曲目的当前设置。然后需要从每个设置中获取音量。尽管settngs的volume属性在MDN文档中看起来已经过时,但我还没有找到其他方法

navigator.mediaDevices.getUserMedia({ audio: true })
  .then(function (stream) {
    alert('Mic Is Connected');
    const tracks = stream.getTracks();
    const settings = tracks.map(track => track.getSettings());
    const volumes = settings.map(setting => setting.volume);
    console.log("volumes: ", volumes);
}).catch(function () {
  alert('Mic Is Not Connected');
});
您还可以将此流作为srcObject添加到音频元素,然后获取volume属性


还有一种可能是Web Audio API特定的音频上下文方式。

这里有一个完整的连接micro和volumne control的示例:@enno.void感谢您的建议,我尝试了代码,但有一个错误,类型“Window&typeof globalThis”上不存在属性“webkitAudioContext”,并且它还表示类型元素上不存在onclick您使用哪种浏览器和版本?您可以不使用webkit前缀直接尝试。@Selçuk我使用的是chrome,我正在将此代码写入typescript文件好的,这工作正常,并且肯定可以使用一个选项,thanksvolume值返回null,我想制作一个类似的音量/声音表,它可以从麦克风不断地给我音量,然后yu可以使用html音频元素的
volumechange
事件。