AudioRecorder.getMinBufferSize() 返回 -2
当我在 AudioRecorder 类中运行 getMinBufferSize() 方法时,该方法总是返回 -2。即使我更改采样率、编码方法和通道号。我已经尝试了所有可能的组合,但它仍然返回-2。我知道 RecordAudio 具有权限。如果我注释掉 getMinBufferSize 行,并将 minBuffer 设为 4096,音频录音机将初始化并录制。仅当我将采样率设置为 8000 并且录音听起来像垃圾时,这才有效。如果我完全改变采样率,程序将强制关闭。
编辑:
bufferSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_DEFAULT,ENCODING_PCM_16BIT);
我在模拟器、Droid Eris、Droid 1 和 Droid 2 Global 上运行它
When ever I run the getMinBufferSize() method in the AudioRecorder Class, the method always returns -2. Even when I change the sample rate, the encoding method, and the channel number. I have tried every combination possible, but it still returns -2. I know that the permissions are there for RecordAudio. If I comment out the line for the getMinBufferSize, and make the minBuffer 4096, the Audio recorder will initialize and record. This will only work when I have the sample rate set to 8000, and the recordings sound like trash. If I change the sample rate at all, the program will force close.
Edit:
bufferSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_DEFAULT,ENCODING_PCM_16BIT);
I am running this on the emulator, a Droid Eris, Droid 1, and Droid 2 Global
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(2)
尝试使用这些参数,因为这些参数是唯一一组可以保证在所有 Android 设备上工作的参数:
AudioRecord.getMinBufferSize(
44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT)
如果 44.1KHz 对您来说太大,那么使用 16000 的采样率我从来没有遇到过问题。另外,请记住这是最小录制大小。根据您的应用程序,在使用该值初始化录音机之前,最好将其乘以 2 或 3。
如果您仍然遇到问题,请确保初始化 AudioRecord
对象时使用的音频源是 MediaRecorder.AudioSource.MIC
。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
查看 AudioRecord.java 的代码,这里实际上只有 3 种可能性:
来源:http://google. com/codesearch/p?hl=en#uX1GffpyOZk/media/java/android/media/AudioRecord.java
另请参阅:为什么 AudioRecord.getMinBufferSize 返回 ERROR_BAD_VALUE (-2)?
Looking at the code for AudioRecord.java, there's really only 3 possibilities here:
Source: http://google.com/codesearch/p?hl=en#uX1GffpyOZk/media/java/android/media/AudioRecord.java
See also: Why does AudioRecord.getMinBufferSize return ERROR_BAD_VALUE (-2)?