2013-02-20 111 views
9

我正在创建一个应用程序,它将Android上的记录文件播放到iphone,反之亦然。如何在Android中录制质量更好的音频文件?

现在我使用,

 audioRecorder = new MediaRecorder(); 
     audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

文件使用具有大小85字节/ 15秒和质量很差此代码记录。

如果我使用,

 audioRecorder = new MediaRecorder(); 
     audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); 
     audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

那么文件大小为25KB/15秒和质量比AAC要好得多。 但问题是,AMR无法在iPhone中播放。

所以请建议Android的录音架构具有更好的质量,实惠的大小,并可以在iPhone上播放。

回答

14

更多信息增加recorder.setAudioEncodingBitRate(值),如果你想改变的质量。

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
recorder.setAudioEncoder(MediaRecorder.getAudioSourceMax()); 
recorder.setAudioEncodingBitRate(16); 
recorder.setAudioSamplingRate(44100); 
recorder.setOutputFile(path); 
recorder.prepare(); 
recorder.start(); 

编辑:

另一种选择是一个转换器添加到您的应用程序。将AMR转换为AAC。

+0

谢谢杰梅因, \t audioRecorder.setAudioSamplingRate(44100); \t audioRecorder.setAudioEncodingBitRate(96000); 试试这个,但声音很大。 – PrvN 2013-02-20 06:31:38

+0

尝试调整采样率和比特率。并找到一个更好的地方来记录。 – StarPinkER 2013-02-20 07:01:19

+0

是增加的比特率为96000和采样率为44100. 但仍然嘈杂... – PrvN 2013-02-20 07:27:42