我需要以至少44.1 kHz的采样率进行记录。我已经在较新的设备(Android 4.1.2)上测试了以下代码,根据我的输入,录制的音频将具有不同的采样率。但是,当我使用旧设备(Android 2.3.4)时,无论我选择哪种采样率,它始终会返回以8 kHz采样的文件。

输出格式和音频编码器均为API级别10,低于我的旧设备的级别。我无法理解我的旧设备(Droid X)的硬件只能支持8 kHz音频采样率,因此我假设必须有另一种方法来强制执行我想要的采样率。

private void startRecording() {

            mRecorder = new MediaRecorder();
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            mRecorder.setOutputFile(mFileName);
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
            mRecorder.setAudioSamplingRate(44100);


            try {
                mRecorder.prepare();
            } catch (IOException e) {
                Log.e(LOG_TAG, "prepare() failed");
            }

            mRecorder.start();
        }

最佳答案

OutputFormat设置为:

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);


然后尝试。它会工作。

10-08 17:05