我想在我的Android手机上录制人类的声音。我注意到安卓有两个类可以做到这一点:AudioRecord和MediaRecorder。有没有人能告诉我这两者之间有什么区别,以及它们各自适用的用例是什么?
我希望能够实时分析人类语音,以测量振幅等。我对AudioRecord更适合这项任务的理解正确吗?
我注意到在安卓的官方guide webpage for recording audio上,他们使用的是MediaRecorder而没有提到AudioRecord。
发布于 2011-05-05 03:04:42
如果您希望在记录仍在进行中时进行分析,则需要使用AudioRecord
,因为MediaRecorder
会自动记录到文件中。AudioRecord
的缺点是,在调用startRecording()
之后,您需要自己从AudioRecord
实例轮询数据。此外,您必须足够快地读取和处理数据,以便内部缓冲区不会溢出(查看logcat输出,AudioRecord
会告诉您发生这种情况的时间)。
发布于 2013-10-07 22:29:44
据我所知,MediaRecorder
是一个黑盒,它在输出端给出压缩的音频文件,而AudioRecorder
只给你提供原始的声音流,你必须自己压缩它。
MediaRecorder
提供了上次调用getMaxAmplitude()
方法以来的最大振幅,因此您可以实现一个声音可视化工具。
因此,在大多数情况下,MediaRecorder
是最好的选择,除非您需要进行一些复杂的声音处理,并且需要访问原始音频流。
发布于 2013-04-15 16:33:33
AudioRecorderer首先将数据保存在minBuffer中,然后从那里将数据复制到临时缓冲区,在MediaRecorder中将数据复制到文件。在AudioRecorder中,我们需要setRecordPosition()接口将保存的数据复制到所需的位置,而在MediaRecorder中,文件指针是用来设置标记位置的。AudioRecorder可以用于那些在模拟器上运行的应用程序,这可以通过提供低采样率来完成,例如8000,而使用MediaRecorder则无法使用模拟器录制音频。在AudioRecord中,屏幕休眠一段时间后,而在MediaRecorder中,屏幕不休眠。
https://stackoverflow.com/questions/5886872
复制相似问题