2013-04-08 82 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