Android AudioRecord与MediaRecorder用于录制音频

sta*_*010 86 android audio-recording audiorecord

我想在我的Android手机上录制人声.我注意到Android有两个类来执行此操作:AudioRecordMediaRecorder.有人能告诉我两者之间有什么区别,每种情况的适当用例是什么?

我希望能够实时分析人类语音以测量振幅等.我是否理解AudioRecord更适合此任务?

我注意到在官方Android 指南网页上录制音频,他们使用MediaRecorder而没有提及AudioRecord.

Ste*_*han 75

如果你想要做你的分析,同时记录仍在进行中,你需要使用AudioRecord,如MediaRecorder自动记录到文件中.AudioRecord有一个缺点,在调用后startRecording()你需要自己从AudioRecord实例轮询数据.此外,您必须足够快地读取和处理数据,以便内部缓冲区不会溢出(查看logcat输出,AudioRecord会告诉您何时发生这种情况).


Lam*_*pos 30

据我所知,它MediaRecorder是一个黑盒子,它在输出上提供压缩音频文件,并AudioRecorder为您提供原始声音流,您必须自己压缩它.

MediaRecorder为您提供最后一次调用getMaxAmplitude()方法的最大功能,以便您可以实现一个声音可视化器.

因此,在大多数情况下MediaRecorder,除了那些您应该进行复杂声音处理并且需要访问原始音频流的选项之外,这是最佳选择.


san*_*v51 17

AudioRecorderer首先将数据保存在minBuffer中,然后将其从那里复制到临时缓冲区,在MediaRecorder中将其复制到文件中.在AudioRecorder中,我们需要api setRecordPosition()来复制所需位置的已保存数据,而在MediaRecorder中,文件指针可以完成此工作来设置标记的位置.AudioRecorder可以用于在仿真器上运行的那些应用程序,这可以通过提供低采样率(例如8000)来完成,而使用MediaRecorder时,无法使用仿真器记录音频.在AudioRecord中屏幕会在一段时间后休眠,而在MediaRecorder中屏幕不会休眠.