在Android中存储录音应该使用哪种音频格式?

6

我正在开发记录麦克风声音的应用程序,目前我将录制的音频存储在Wave文件中,但是Wave文件的大小成为了一个问题。

我得知安卓没有MP3解码器,这是真的吗?我该如何以压缩形式存储记录的音频?

我正在使用AudioRecord类进行录制,并且不想使用MediaRecorder。


这取决于您要在哪里播放这些文件?是在Android设备上还是在PC上? - Damian Petla
在各种移动设备上。 - DCoder
我有同样的问题。你找到尺寸的解决方案了吗?目前我使用低质量的.3GP格式。 - Namikaze Minato
2个回答

2

使用AudioRecord并没有太多选择。它只能以PCM格式存储音频。您只能通过将通道配置设置为CHANNEL_IN_MONO和音频格式设置为ENCODING_PCM_8BIT来降低大小。此外,您可以尝试扩展AudioRecord类并覆盖read()方法。然后,您必须自己转换音频,但这不是推荐的方法。

我知道您不想这样做,但最好的选择是重构代码以使用MediaRecorder。以下是参考文档中的示例:

MediaRecorder recorder = new MediaRecorder();
 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
 recorder.setOutputFile(PATH_NAME);
 recorder.prepare();
 recorder.start();   // Recording is now started
 ...
 recorder.stop();
 recorder.reset();   // You can reuse the object by going back to setAudioSource() step
 recorder.release(); // Now the object cannot be reused

在这个网站上http://developer.android.com/guide/appendix/media-formats.html#core,你可以找到一个漂亮的表格,列出了支持的格式,考虑到Android版本。尝试使用AAC LC、AMR-NB和AMR-WB这些格式,除了大小之外,还要注意质量。

使用MediaRecorder时的问题是,我想要实现播放-暂停-恢复-停止功能。但是使用MediaRecorder实现这些功能很困难。 - DCoder
如果这样做,你最终会得到多个音频文件。你可以在最后合并这些文件,或者考虑将录音的文件夹共享为记录部分。按顺序播放它们将很容易。 - Damian Petla

0

目前没有Mp3解码器,但所有Android版本都支持的默认格式是.mgp和.amr格式,这些格式将使用MediaPlayer和AudioPlayer类默认播放。

注意:这并不保证所有播放器都支持这个扩展名,如果不是Android设备。


我该怎么做才能减小我的波形文件大小?如何将它们转换为.amr格式? - DCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接