Android AudioRecord的AudioHardwareALSA错误

时间:2010-12-19 22:17:17

标签: android audiorecord android-audiorecord

我正在创建一个我正在编写的简单的AudioRecord应用程序,它首先从一堆这些开始:

12-19 17:05:57.393: WARN/ResourceType(2233): Resources don't contain package for resource number 0x7f0800f4

然后这个:

12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA::AudioStreamInALSA mMode=-1
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - input   - format = 1, channels = 16, rate = 44100
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - default - format = 1, channels = 16, rate = 44100
12-19 17:05:57.863: ERROR/AudioHardwareALSA(2182): AudioStreamInALSA - mDefaults->sampleRate = 44100
12-19 17:05:57.963: ERROR/AudioFlinger(2182): readInputParameters mInputBytes 8320, mFrameSize 2 mSampleRate 44100 mChannelCount(1)
12-19 17:05:57.963: ERROR/(2182): AFCCreateReSampler: avAFCInfo->bUsed[0] inSampleRate[44100] outSampleRate[44100] nChannel[1] outbitDepth[16]
12-19 17:05:58.278: WARN/AudioFlinger(2182): RecordThread: buffer overflow
12-19 17:05:58.328: WARN/IInputConnectionWrapper(6726): showStatusIcon on inactive InputConnection
12-19 17:06:05.598: ERROR/ALSALib(2182): external/alsa-lib/src/pcm/pcm.c:7231:(snd_pcm_recover) overrun occured

这意味着什么?我可以在必要时发布源代码,但是我正在寻找这些错误可能引用的基本答案以及为什么在这种情况下可能发生缓冲区溢出。感谢。

1 个答案:

答案 0 :(得分:1)

查看错误“发生溢出”。阅读本文:

http://lxr.post-tech.com/source/external/alsa-lib/src/pcm/pcm.c并在其解释的评论中:

266此错误表示xrun(用于播放的欠载或用于捕获的溢出)。 267当应用程序不提供新样本时,可能会发生欠载 268及时到alsa-lib(由于CPU使用率)。超支可能发生在 269应用程序不会及时从alsa-lib获取新捕获的样本。 270

所以它只是意味着捕获线程太忙于做其他事情 - 这是正确的吗?也许你应该创建一个专门用于捕获音频流的线程?

但是读到这个:

http://programming-android.labs.oreilly.com/ch14.html

也可能是由于分配的捕获量不足。这是对的吗?