用AAC编码器录音?

问题描述:

我通过录制音频MediaRecorder和问题是:用AAC编码器录音?

当我使用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提供一些指导.. 感谢..

+0

它看起来像记录的文件是40秒。将其传输到PC并查看实际持续时间。 – Reno

+0

如何在没有MediaRecorder的情况下做到这一点?假设我已经有了原始输入流。 – 4ntoine

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

MediaRecoder.setAudioSamplingRate(frequency);