首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓AudioRecord与MediaRecorder的音频录制

安卓AudioRecord与MediaRecorder的音频录制
EN

Stack Overflow用户
提问于 2011-05-05 00:44:16
回答 3查看 26.1K关注 0票数 96

我想在我的Android手机上录制人类的声音。我注意到安卓有两个类可以做到这一点:AudioRecordMediaRecorder。有没有人能告诉我这两者之间有什么区别,以及它们各自适用的用例是什么?

我希望能够实时分析人类语音,以测量振幅等。我对AudioRecord更适合这项任务的理解正确吗?

我注意到在安卓的官方guide webpage for recording audio上,他们使用的是MediaRecorder而没有提到AudioRecord。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-05 03:04:42

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

票数 89
EN

Stack Overflow用户

发布于 2013-10-07 22:29:44

据我所知,MediaRecorder是一个黑盒,它在输出端给出压缩的音频文件,而AudioRecorder只给你提供原始的声音流,你必须自己压缩它。

MediaRecorder提供了上次调用getMaxAmplitude()方法以来的最大振幅,因此您可以实现一个声音可视化工具。

因此,在大多数情况下,MediaRecorder是最好的选择,除非您需要进行一些复杂的声音处理,并且需要访问原始音频流。

票数 36
EN

Stack Overflow用户

发布于 2013-04-15 16:33:33

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

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5886872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档