AudioHardwareALSA ошибки с Android AudioRecord

1

Я начинаю простое приложение 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

Что это может означать? Я могу отправить исходный код, если это необходимо, но я ищу базовый ответ о том, что эти ошибки могут относиться и почему переполнение буфера может произойти в такой ситуации. Спасибо.

  • 0
    +1, хотел бы узнать ответ на этот
  • 0
    @Tom С первых ошибок "WARN / ResourceType ... и т. Д." несущественны. Переполнение буфера происходит с объектом AudioRecord, когда аудио-буфер заполняется и не читается достаточно быстро. Когда буфер заполняется и не читается, ему нужно отбросить потоки, и он выдает эти ошибки переполнения буфера, чтобы предупредить разработчика о том, что вы пропустили некоторые примеры.
Теги:
audiorecord
android-audiorecord

1 ответ

1
Лучший ответ

Посмотрите на ошибку "переполнение произошло". Прочтите это:

http://lxr.post-tech.com/source/external/alsa-lib/src/pcm/pcm.c и в пояснении, которое он объяснил:

266 Эта ошибка означает xrun (недогрузка для воспроизведения или переполнение для захвата). 267 Недостаток может произойти, когда приложение не подает новые образцы 268 во время alsa-lib (из-за использования ЦП). Переполнение может произойти, когда 269 ​​приложение не принимает новые захватываемые образцы во времени из alsa-lib. 270

так что это просто означает, что захватывающий поток слишком занят, делая другие вещи - это правильно? Возможно, вы должны создать поток, посвященный захвату аудиопотока?

Но прочитав это:

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

это также может быть связано с недостаточным буфером, выделенным для захвата. Это правильно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню