错误消息“AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000]...”是啥意思?

Posted

技术标签:

【中文标题】错误消息“AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000]...”是啥意思?【英文标题】:what the error message "AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000]..." mean?错误消息“AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000]...”是什么意思? 【发布时间】:2011-03-19 21:21:24 【问题描述】:

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


int 频率 = 16000;

int channelConfiguration = AudioFormat.CHANNEL_IN_MONO; int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; int bufferSize = AudioRecord.getMinBufferSize(频率,通道配置,音频编码); AudioRecord audioRecord = new AudioRecord(MediaRecorder.Audiosource.MIC, 频率、通道配置、音频编码、缓冲区大小); 短 [] 缓冲区 = 新短 [缓冲区大小];

isAdIdle = 假; audioRecord.startRecording();

while(isRecording) int bufferReadResult = audioRecord.read(buffer, 0, bufferSize); // 保存缓冲区数据

此代码在其他设备上运行良好,例如 nexus one,但在三星 Galexy S 上,我收到以下错误消息:


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

有什么问题?谁能帮我解决这个问题?

先谢谢了~ 易金。

【问题讨论】:

【参考方案1】:

如果您仍然对它感兴趣,我发现了几件事情可以让 Galaxy S(以及驱动程序顶部带有 alsa 的所有设备)上的音频记录功能。

    不要相信 getMinBufferSize ! 这里有一些似乎适用于所有设备的代码:
if(inputBuffSizeRec <= 4096)
   inputBuffSizeRec = 4096 * 3/2;

这已经有很大帮助了,但是您仍然会观察到一些丢失的帧

    不要连续读入。

您必须在每个读取方法之前添加获取当前时间戳;将其与前一个值进行比较,如果最后一帧和您要读取的帧之间的延迟大于帧大小,您应该在读取前等待(睡眠)。目标是在缓冲区(音频驱动程序缓冲区)尚未收到您要请求的内容时不调用 read 方法。

请注意,我读取的块大小小于缓冲区大小(我认为这也更好)。

我在另一个 android 开源 sip 应用程序 (sipdroid) 上找到了解决方案。集成在我的,听起来工作正常。不知道日志中是否还有错误(警告?),但是……我用我的应用程序听到了来自 Galaxy S 的语音邮件记录器,声音很完美。

【讨论】:

【参考方案2】:

我也面临这个问题。 供参考的是我的项目的未解决问题: http://code.google.com/p/csipsimple/issues/detail?id=89#c6

很遗憾,我没有可以测试的设备。

您是否使用另一种音频格式和另一种采样率? 我猜想使用 44100 作为频率将消除错误,因为根据它的名称,它与重新采样器的创建有关。

此外,如果你能说出你观察到的音频数据,我会很有趣吗?声音断断续续/不完整?没有?效果很好但是录制时cpu过载?

【讨论】:

【参考方案3】:

我尝试使用不同的采样率(8000 和 44100 Hz)进行录制。但是失败了!

在 8000 Hz 上,成功创建了 AudioRecord 对象,但从中读取的数据不稳定且不完整!这与 16000 Hz 记录的结果相同。

在 44100 Hz 设置下,AudioRecord 对象的创建失败并抛出异常。

记录的数据(位交换后保存)是这样的: (二进制) (地址 0h) 80 07 80 07 ... (相同模式) ... ...(相同的模式)... (地址 210h) 07 80 07 80 08 80 FD 82 FF 87 5C 8D ... ...(不同的噪声模式)...

我认为 CPU 负载非常低并且几乎处于空闲状态。

现在我正在尝试测试AudioRecord的其他设置~ 并寻求社区的帮助!

感谢您的帮助和关注

易金。

【讨论】:

以上是关于错误消息“AFCCreateReSampler: avAFCInfo->bUsed[0] in SampleRate[44100] outSampleRate[16000]...”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使没有错误,表单也会出现错误消息?

如何解决 weasyprint 错误消息 gobject-2.0-0 错误 0x7e 消息?

如何在spring mvc 3.0中的同一jsp中显示运行时错误消息或sql错误消息

当我想连接有这个问题“错误”:“内部服务器错误”,“消息”:“没有可用的消息”,[重复]

自定义错误消息的 Grails 问题

修复包含错误的单元格时,消息框一直显示