错误消息“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错误消息