我有一段简单的代码可以创建一个AudioRecord对象,然后用它来记录到一个文件。它非常标准,似乎工作得非常好。我正在使用三星GalaxyS Vibrant运行股票Android 2.2。
但是,我在logcat中以不同的间隔收到这些消息:
04-13 14:03:30.754: V/AudioRecord(4831): Overrun user: 820, server: 1040, flowControlFlag 0
04-13 14:03:30.766: V/AudioRecord(4831): Overrun user: 820, server: 1040, flowControlFlag 1
有谁知道这些意味着什么?我是否超越了内部音频缓冲区并丢失了音频帧?它似乎不是来自录制的文件,但这些间歇性的消息让我有点担心。
答案 0 :(得分:6)
这可能有点晚了,但这仅仅是一条日志信息(不是特别是三星,我看到它有不同的品牌,型号和品牌)告诉你,你已经开始录制,但没有读出来来自AudioRecord的数据。
因此Overrun user
,AudioRecord的缓冲区已满。
答案 1 :(得分:2)
这似乎是一些三星设备使用的内部日志。所以你不能隐藏它们,但它也没有害处。如果您不想看到它,您可以从logcat
中过滤掉它答案 2 :(得分:0)
检查您的权限。
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
此权限是必要的
答案 3 :(得分:0)
我认为是因为读取pcm数据太慢,我遇到了同样的问题,当我在两次读取操作之间做一点睡眠时,当我将睡眠时间设置得更长时,这个日志会变得更多。 所以我认为有两种方法可以解决这个问题: 1.快速读取操作 2.当你将AudioRecorder设置为2 * minBufferSize或更大时,将缓冲区设置得更大。它允许您在每次读取操作时读取更多数据。 希望你能理解,对不起我的英语不好。