关于AudioRecorder录音获取音量的问题
while (isPrepared) {
int bytes = mRecorder.read(buffer, 0, bufferSize);
if (bytes > 0) {
ringBuffer.write(buffer, bytes);
}
// //取得音量
long v = 0;
// 将 buffer 内容取出,进行平方和运算
for (int i = 0; i < buffer.length; i++) {
v += buffer[i] * buffer[i];
}
float f = (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1);
logger.i("AudioManager : f = " +f);
// // 平方和除以数据总长度,得到音量大小。
// double mean = v / (double) bytes;
// double volume = 10 * Math.log10(mean);
// logger.i("AudioManager : 总长度:" + mean);
// logger.i("AudioManager : 分贝值:" + volume);
}
我的代码是上面那样子的,获取音量时,使用float f = (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1);的话,获取到的值永远为0,使用注释掉的方法的话,分贝值一直等于34.xxxxxx,我的代码哪里出问题了?(方法都是网上找的)
...全文
相关推荐
录音机22
通过`getTargetLineInfo()`方法,我们可以获取系统支持的录音设备信息,然后创建`TargetDataLine`对象进行录音。
android AudioRecorder简单心得分享
在开始录音之前,确保已经正确设置并释放了 `AudioManager` 的相关设置,例如调整音量或设置录音源。
ios录制声音
显示音量大小图示:在iOS中,`AVAudioSession`提供了获取当前音频输入音量的功能。但是,它并不直接提供实时音量的图示,这部分通常需要自定义UI来实现。以下是如何获取音量数据:1.
matlab实现录音并保存为wav或mp3格式的文件
一个典型的Matlab录音代码可能包含创建录音对象、录制音频、停止录音、获取音频数据以及保存音频文件等步骤。
winform audio record
**错误处理和资源管理**: 在录音过程中,必须妥善处理各种可能出现的问题,例如设备不可用、磁盘空间不足等。同时,确保正确释放音频设备和文件流资源,防止内存泄漏和资源占用。


