javascript - 网络音频中的分贝值
问题描述
我正在为我正在开发的 JavaScript 应用程序使用cordova-plugin-audioinput插件。我正在尝试使用以下代码实时获取不同频率的不同分贝值:
function startCapture() {
audioinput.start({
audioSourceType: 9,
sampleRate: 44100,
streamToWebAudio: true
});
audioCtx = audioinput.getAudioContext();
analyser = audioCtx.createAnalyser();
analyser.fftSize = 8192;
analyser.maxDecibels = 0;
audioinput.connect(analyser)
bufferLength = analyser.frequencyBinCount;
dataArray = new Uint8Array(bufferLength);
}
数据被保存到dataArray
使用中analyser.getByteFrequencyData(dataArray);
即使我指定maxDecibels
to 0
,也会dataArray
充满正值,这对我来说没有任何意义。我需要最终结果以分贝为单位,即使被推入的值会dataArray
实时对音量做出相应反应,但它们不是以分贝为单位的。
解决方案
返回的值getByteFrequencyData()
始终在 0 到 255 的范围内。这些值从minDecibels
到线性映射maxDecibels
。请参阅getByteFrequencyData。
推荐阅读
- c - C - int 函数返回 ascii 值
- fiware-orion - 同步性/FIWARE:IDM 通信错误
- javascript - 自定义 Vue 输入组件不显示绑定值
- python - 如何从 github 获取文件到我的 python 代码中
- python - 如何在 Django 中使用模型的 ID 保存 FileField
- c# - Wpf中文本框的MaterialDesign下划线颜色
- mysql - PHP 中的 SQL Select 语句缺少表 1 和 2 中的全部内容,因为表 3 缺少 product_id
- bash - 以交互模式运行脚本中调用的其他脚本
- python - 为什么在 pip3 上安装 AppKit 时导入 AppKit 不起作用?
- html - 如何让我的页脚在所有设备中保持在底部?