我正在使用cordova-plugin-audioinput我正在开发的 JavaScript 应用程序的插件。我正在尝试使用以下代码实时获取不同频率下的不同分贝值:
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);
}
使用analysisr.getByteFrequencyData(dataArray);将数据保存到
dataArray
中;
即使我将 maxDecibels
指定为 0
,dataArray
也会填充正值,这对我来说没有任何意义。我需要最终结果以分贝为单位,即使推送到 dataArray
中的值实时响应音量,它们也不是以分贝为单位。
最佳答案
getByteFrequencyData()
返回的值始终在 0 到 255 之间。这些值从 minDecibels
线性映射到 maxDecibels
。请参阅getByteFrequencyData .
关于javascript - 网络音频的分贝值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293899/