2013-04-08 75 views
4

在我的应用程序中,我使用MediaRecorder以m4a(AAC编码)录制音频。我所有的录音都被缩短了(大约半秒)。为了我的应用程序的目的,重要的是我有整个文件。这是一个错误还是有我缺少的东西?MediaRecorder切断文件结尾

记录代码:

 //set up recorder 
     recorder = new MediaRecorder(); 
     recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     recorder.setAudioChannels(1); 
     recorder.setAudioSamplingRate(16000); 
     recorder.setOutputFile(fileName); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

     //begin recording 
     recorder.prepare(); 
     recorder.start(); 

停止录制代码:

 //stop recording 
     recorder.stop(); 
     recorder.release(); 
     recorder = null; 
+1

是否有可能只记录额外的半秒来修复这种情况? – 2013-04-08 18:37:30

+0

这是目前我正在使用的解决方法,我不满意它,因为它会减慢我的应用程序的流动速度。它需要快速工作,并且需要在第一个记录完成时立即进行另一个记录,以便半秒延迟引起半秒的应用延迟。 – rmooney 2013-04-08 19:07:23

回答

4

这似乎是在Android的基础AAC音频编码器的错误。我发现唯一的解决方案是使用基于AMR的音频编码器。不幸的是,AMR_WB对于人声之外的其他任何声音听起来都不太好。

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); 

唯一的另一种选择,就我所知,就是使用和AudioRecord,这是非常困难的。

+0

自从我开始工作已经有一段时间了,但我最终还是使用了AudioRecord。 – rmooney 2014-06-08 01:35:11