提问人:stackoverflowuser2010 提问时间:5/5/2011 最后编辑:stackoverflowuser2010 更新时间:7/13/2018 访问量:28835
Android AudioRecord 与 MediaRecorder 用于录制音频
Android AudioRecord vs. MediaRecorder for recording audio
问:
我想在我的 Android 手机上录制人声。我注意到 Android 有两个类可以做到这一点:AudioRecord 和 MediaRecorder。有人可以告诉我两者之间有什么区别以及每种方法的合适用例是什么吗?
我希望能够实时分析人类语音以测量振幅等。 我是否正确地理解 AudioRecord 更适合这项任务?
我注意到在官方 Android 指南网页上录制音频,他们使用 MediaRecorder,没有提到 AudioRecord。
答:
如果要在记录仍在进行时进行分析,则需要使用 ,因为自动记录到文件中。 缺点是调用后需要自己从实例中轮询数据。此外,您必须足够快地读取和处理数据,以便内部缓冲区不会溢出(查看 logcat 输出,当发生这种情况时会告诉您)。AudioRecord
MediaRecorder
AudioRecord
startRecording()
AudioRecord
AudioRecord
评论
AudioRecorderer 首先将数据保存在 minBuffer 中,然后从那里复制到临时缓冲区,在 MediaRecorder 中将其复制到文件中。 在 AudioRecorder 中,我们需要 api setRecordPosition() 将保存的数据复制到所需位置,而在 MediaRecorder 中,文件指针可以完成这项工作来设置标记的位置。 AudioRecorder 可用于那些在模拟器上运行的应用程序,这可以通过提供低采样率(例如 8000)来完成,而使用 MediaRecorder 则无法使用模拟器录制音频。 在 AudioRecord 中,屏幕会在一段时间后进入睡眠状态,而在 MediaRecorder 中,屏幕不会进入睡眠状态。
据我了解,这是一个黑匣子,它在输出上提供压缩的音频文件,并为您提供原始声音流,您必须自己压缩它。MediaRecorder
AudioRecorder
MediaRecorder
为您提供上次调用方法的最大振幅,以便您可以实现声音可视化工具。getMaxAmplitude()
因此,在大多数情况下,这是最佳选择,除了那些您应该进行一些复杂的声音处理并且需要访问原始音频流的情况。MediaRecorder
评论