我正在开发记录麦克风声音的应用程序,目前我将录制的音频存储在Wave文件中,但是Wave文件的大小成为了一个问题。
我得知安卓没有MP3解码器,这是真的吗?我该如何以压缩形式存储记录的音频?
我正在使用AudioRecord类进行录制,并且不想使用MediaRecorder。
我正在开发记录麦克风声音的应用程序,目前我将录制的音频存储在Wave文件中,但是Wave文件的大小成为了一个问题。
我得知安卓没有MP3解码器,这是真的吗?我该如何以压缩形式存储记录的音频?
我正在使用AudioRecord类进行录制,并且不想使用MediaRecorder。
使用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
目前没有Mp3解码器,但所有Android版本都支持的默认格式是.mgp和.amr格式,这些格式将使用MediaPlayer和AudioPlayer类默认播放。
注意:这并不保证所有播放器都支持这个扩展名,如果不是Android设备。