使用AAC编码器录音?

时间:2011-11-18 10:56:00

标签: android audio-recording

我正在通过 MediaRecorder 录制音频,问题是:

当我使用 AMR_NB 编码器时,getDuration()返回正确的值但另一方面当我使用 AAC 编码器会增加getDuration值。(例如,如果我录制5秒音频,它会提供40秒并播放40秒)

录制音频文件的代码

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);            
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);                       
recorder.setOutputFile(filePath); 
recorder.prepare();
recorder.start(); 

播放录制音频的代码:

mp.setDataSource(audioPath);
mp.prepare();             
Log.e("duration of record"," " +mp.getDuration());                   
mp.start();

plaese提供一些指导.. 谢谢..

1 个答案:

答案 0 :(得分:0)

检查AudioSampleRate,因为AMR_NB仅在8KHz下工作,但AAC最高可达到44,1KHz。您应始终以相同的采样率工作,或进行转换/计算正确的持续时间。

MediaRecoder.setAudioSamplingRate(frequency);