【问题标题】:Audio recording with AAC encoder?用 AAC 编码器录音?
【发布时间】:2012-01-01 03:34:55
【问题描述】:

我正在通过 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();

请提供一些指导.. 谢谢。。

【问题讨论】:

  • 看起来记录的文件是40秒。将其传输到 PC 并查看实际持续时间。
  • 没有MediaRecorder怎么办?假设我已经有了原始输入流。

标签: android audio-recording


【解决方案1】:

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

MediaRecoder.setAudioSamplingRate(frequency);

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多