4

在我的应用程序中,我正在使用 MediaRecorder 以 m4a(AAC 编码)录制音频。我所有的录音都被剪短了(大约半秒)。就我的申请而言,拥有整个文件很重要。这是一个错误还是我遗漏了什么?

记录代码:

       //set up recorder
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioChannels(1);
        recorder.setAudioSamplingRate(16000);
        recorder.setOutputFile(fileName);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

        //begin recording
        recorder.prepare();
        recorder.start();

停止记录代码:

        //stop recording
        recorder.stop();
        recorder.release();
        recorder = null;
4

1 回答 1

6

这似乎是 Android 的基于 AAC 的音频编码器中的一个错误。我发现唯一可行的解​​决方案是使用基于 AMR 的音频编码器。不幸的是,AMR_WB 对于人声以外的任何东西听起来都不是很好。

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);

据我所知,唯一的其他选择是使用 AudioRecord,这要困难得多。

于 2014-06-07T00:39:11.097 回答