4

私のアプリケーションでは、MediaRecorder を使用してオーディオを m4a (AAC エンコード) で録音しています。私の録音はすべて短くカットされています (約 0.5 秒)。私のアプリケーションの目的上、ファイル全体を持っていることが重要です。これはバグですか、それとも何か不足していますか?

記録コード:

       //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 に答える