在android中用于存储录制的音频格式

时间:2014-05-06 10:33:09

标签: java android audio audio-recording

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

我开始知道android没有mp3解码器是真的吗?如何以压缩形式存储录制的音频?

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

2 个答案:

答案 0 :(得分: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。除尺寸外,请检查质量。

答案 1 :(得分:0)

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

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