setAudioSamplingRate不适用于旧设备(Android 2.3.4)

时间:2013-06-24 19:56:28

标签: android mediarecorder

我需要以至少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();
        }

1 个答案:

答案 0 :(得分:1)

OutputFormat设置为:

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);

然后试试。它会起作用。