Bil*_*ker 5 audio android visualizer amplitude decibel
我一直在阅读另一篇关于从媒体播放器实时计算振幅的文章,但我不清楚如何获得对我有用的值。我需要的是在 0-100 之间标准化的线性幅度值,但正如我在另一篇文章中看到的那样,他们正在执行没有多大意义的 db 计算,因为它们没有标准化为最大 0dB 值(来自如何计算实时音频幅度(android)):
double amplitude = 0;
for (int i = 0; i < audioData.length/2; i++) {
double y = (audioData[i*2] | audioData[i*2+1] << 8) / 32768.0
// depending on your endianness:
// double y = (audioData[i*2]<<8 | audioData[i*2+1]) / 32768.0
amplitude += Math.abs(y);
}
amplitude = amplitude / audioData.length / 2;
Run Code Online (Sandbox Code Playgroud)
我已经看到,为了计算 de dB,我应该执行以下操作(来自如何从媒体播放器计算幅度的分贝 (dB)? )
double sum=0;
for (int i = 0; i < audioData.length/2; i++) {
double y = (audioData[i*2] | audioData[i*2+1] << 8) / 32768.0;
sum += y * y;
}
double rms = Math.sqrt(sum / audioData.length/2);
dbAmp = 20.0*Math.log10(rms);
Run Code Online (Sandbox Code Playgroud)
我已经尝试过该解决方案,但实时值接近 0,但有时超过 0,我的意思是,介于 -Inifinit(无声音)到 1.2(如果我避免 20.0* 乘法)或其他任何值之间。无论如何,我想获得一个标准化值[0-100],而不是dB值。
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |