用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提供一些指导.. 感谢..
答
检查AudioSampleRate,因为AMR_NB只能在8kHz但AAC可以做到高达44,1KHz。您应始终以相同的采样率工作,或进行转换/计算正确的持续时间。
MediaRecoder.setAudioSamplingRate(frequency);
它看起来像记录的文件是40秒。将其传输到PC并查看实际持续时间。 – Reno
如何在没有MediaRecorder的情况下做到这一点?假设我已经有了原始输入流。 – 4ntoine