我正在为自己开发的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
设置为0
,dataArray
也会充满正值,这对我来说实际上没有任何意义。我需要最终结果以分贝为单位,即使被推入dataArray
的值会实时对体积做出相应的反应,但不是分贝。
答案 0 :(得分:1)
getByteFrequencyData()
返回的值始终在0到255的范围内。这些值从minDecibels
到maxDecibels
线性映射。参见getByteFrequencyData。