我正在通过 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提供一些指导.. 谢谢..
答案 0 :(得分:0)
检查AudioSampleRate,因为AMR_NB仅在8KHz下工作,但AAC最高可达到44,1KHz。您应始终以相同的采样率工作,或进行转换/计算正确的持续时间。
MediaRecoder.setAudioSamplingRate(frequency);