android 错误消息“AFCCreateReSampler:avAFCInfo->b采样率[44100]中使用的[0]输出采样率[16000]...”平均值?

lmyy7pcs  于 2023-02-14  发布在  Android
关注(0)|答案(3)|浏览(175)

在Android 2.1设备(Samsung Galexy S)上,我尝试使用以下代码录制音频数据:

int frequency = 16000;   

   int channelConfiguration = AudioFormat.CHANNEL_IN_MONO;  
   int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; 
   int bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding);
   AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.MIC, 
     frequency, channelConfiguration, audioEncoding, bufferSize); 
   short [] buffer = new short[bufferSize]; 
   
   isAdIdle = false; 
   audioRecord.startRecording(); 
   
   while( isRecording ) {
      int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
      // save buffer data
   }

此代码在Nexus One等其他设备上运行良好,但在三星Galaxy S上,我有以下错误信息:

AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000] nChannel[2] outBitDepth[16]

有什么问题吗?有人能帮我解决这个问题吗?
先谢了~ YI Kim。

bfnvny8b

bfnvny8b1#

如果你仍然对它感兴趣,我发现有几件事要做,使音频记录功能在Galaxy S(和所有设备与Alsa的顶部驱动程序)。
1.不要相信getMinBufferSize!下面是一些似乎可以在所有设备上工作的代码:

if(inputBuffSizeRec <= 4096){
   inputBuffSizeRec = 4096 * 3/2;
}

这已经很有帮助了,但是您仍然会观察到一些丢失的帧
1.不要连续阅读。
必须在每个读取方法之前添加获取当前时间戳;将其与之前的值进行比较,如果最后一帧与要读取的帧之间的延迟大于帧大小,则应在阅读之前等待(休眠)。目标是在缓冲区(音频驱动程序缓冲区)尚未被输入您将请求的内容时不调用读取方法。
注意,我读取的块大小小于缓冲区大小(我认为这也更好)。
我在另一个android开源sip应用程序(sipdroid)上找到了这个解决方案。集成在我的应用程序中,声音工作得很好。不知道日志中是否仍然有错误(警告?),但是......我在我的应用程序中使用了galaxy S的语音邮件录音机,声音非常完美。

x6492ojm

x6492ojm2#

我也面临着这个问题,下面是我项目的公开问题,供大家参考:http://code.google.com/p/csipsimple/issues/detail?id=89#c6
很遗憾,我没有设备可供测试。
你是用另一种音频格式和另一个采样率吗?我猜使用44100作为频率将消 debugging 误,因为根据它的名称,它与重新采样器创建。
此外,如果你能告诉我你观察到的音频数据是什么,我会很感兴趣的?它是波涛汹涌的声音/不完整的?什么都没有?工作正常,但cpu在录音时超载?

nzrxty8p

nzrxty8p3#

我试过用不同的采样率记录,8000和44100赫兹。但是失败了!
在8000 Hz时,成功创建了一个AudioRecord对象,但从中读取的数据不连贯且不完整!这与16000 Hz录音的结果相同。
在44100 Hz设置上,创建AudioRecord对象失败并引发异常。
记录的数据(位交换后保存)如下所示:(二进制)(地址0 h)80 07 80 07...(相同模式)...
...(相同的模式)...(地址210 h)07 80 07 80 08 80 FD 82 FF 87 5C 8D......(不同的噪声模式)...
我认为CPU负载非常低,几乎处于空闲状态。
现在我正在尝试测试AudioRecord的其他设置~并寻求社区的帮助!
感谢您的帮助和兴趣
易金。

相关问题