0

我正在为我正在开发的 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);

即使我指定maxDecibelsto 0,也会dataArray充满正值,这对我来说没有任何意义。我需要最终结果以分贝为单位,即使被推入的值会dataArray实时对音量做出相应反应,但它们不是以分贝为单位的。

4

1 回答 1

1

返回的值getByteFrequencyData()始终在 0 到 255 的范围内。这些值从minDecibels到线性映射maxDecibels。请参阅getByteFrequencyData

于 2018-07-12T14:33:54.140 回答