5

我有一段简单的代码创建一个 AudioRecord 对象,然后用它来记录到一个文件中。这是非常标准的,似乎工作得很好。我正在使用运行 Android 2.2 的三星 GalaxyS Vibrant。

但是,我在 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

有谁知道这些是什么意思?我是否超出了内部音频缓冲区并丢失了音频帧?从录制的文件中看起来不像,但这些断断续续的消息让我有点担心。

4

4 回答 4

6

这可能有点晚了,但这只是一条日志消息(不是特别是三星,我看到它有不同的品牌、型号和品牌),告诉你你已经开始录制,但没有从录音带。

因此Overrun user,AudioRecord 的缓冲区已满。

于 2014-02-21T07:38:05.863 回答
2

这似乎是一些三星设备使用的内部日志。所以你不能隐藏它们,但它也无害。如果你不想看到它,你可以从你的 logcat 中过滤掉它

于 2013-04-13T19:15:44.397 回答
0

检查您的权限。

<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>

此许可是必要的

于 2014-07-10T15:21:47.870 回答
0

我认为是因为读取 pcm 数据太慢了,我遇到了同样的问题,当我在两次读取操作之间做一点睡眠时,当我设置睡眠时间更长时,这个日志会变得更多。所以我认为有两种方法可以解决这个问题: 1.使读取操作快速 2.使缓冲区更大,当你新的 AudioRecorder 设置最后一个参数为 2*minBufferSize 或更大。它可以让您在每次读取操作时读取更多数据。希望你能理解,对不起我糟糕的英语。

于 2015-09-22T09:55:04.043 回答