繁体   English   中英

尝试使用OpenSL ES录制音频时出错

[英]Error when trying to record Audio with OpenSL ES

运行使用适用于Android的OpenSL ES API的应用程序时出现错误。 运行应用程序时,出现以下错误:

05-23 16:18:19.355: ERROR/AudioHardwareALSA(84): ALSALib device/samsung/GT-I9000/alsa-lib/src/pcm/pcm.c:7244:(snd_pcm_recover) overrun occured.

但是,我无法找到原因。 也许此调试消息与此有关?

05-23 16:18:19.339: DEBUG/dalvikvm(1409): JIT unchain all for threadid=11

我怀疑第一个是第二个引起的。 但是我该如何防止呢? 我还在日志中看到了几条GC_EXPLICIT和GC_CONCURRENT调试消息。

无论如何,我使用OpenSL ES录制和播放音频数据。 数据通过Java层通过WiFi发送和/或接收。 但是,为了让它流畅运行,我不希望GC出现干扰...有什么方法可以防止VM限制GC的使用?


编辑

我发现JIT unchain all for threadid=11 我已经在干净的新手机上运行了该应用程序,但最初没有显示该错误,但是仍然显示DEBUG消息。 那时它对性能没有影响。 但是,几天后,该错误开始出现,并且我的音频数据没有出现明显的变化。

我尝试增加分配给记录器的缓冲区数量,现在为4,但这也无济于事。 我已经查看了pcm.c的源代码,但这对我没有任何帮助。 有人对这个问题有想法吗?

看来我在运行另一个问题导致了这个问题。 似乎我有另一个线程由于错误的代码子句而消耗了很多周期。 这导致线程跳过了大部分代码,实际上什么也没做。 随着线程忙于等待,音频被抑制了,并且出现了上面提到的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM