Android:如何使用MediaRecorder类生成.WAV文件?

时间:2015-07-22 13:33:45

标签: android audio wav audio-recording mediarecorder

我在创建某些文件类型时遇到了一些麻烦。

 MediaRecorder myAudioRecorder=new MediaRecorder();
 myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
 myAudioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
 myAudioRecorder.setAudioEncodingBitRate(16);

你能解释一下我需要使用哪一个组合才能制作普通的MP3,WAV,AAC或AMR音频文件。现在我不确定这是否正确:(

1 个答案:

答案 0 :(得分:1)

使用MediaRecorder无法生成wav或mp3。使用MediaRecorder,您可以生成3gp,aac和m4a。我正在使用这些代码块来录制麦克风的音频:

    if (Build.VERSION.SDK_INT <= 9) {
        // Android 2.3.2 and lower
        outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
                + File.separator + strDate + ".3gp";
        mRecorder.setAudioSamplingRate(8000);
        mRecorder.setAudioEncodingBitRate(12200);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    } else if (Build.VERSION.SDK_INT >= 10 && Build.VERSION.SDK_INT <= 15) {
        // Android 2.3.3 - Android 4.0.4
        outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
                + File.separator + strDate + ".m4a";
        mRecorder.setAudioSamplingRate(44100);
        mRecorder.setAudioEncodingBitRate(96000);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    } else {
        // Android 4.1 and above
        outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
                + File.separator + strDate + ".m4a";
        mRecorder.setAudioSamplingRate(44100);
        mRecorder.setAudioEncodingBitRate(96000);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
    }

注意:当我尝试产生aac声音时,该文件无法在Android上播放但在Windows上无法播放。我不确定为什么,但m4a也会产生高质量的声音。

编辑:m4a和3gp文件在Android 4.x上完美播放。特别是我在Android 4.4.2三星Galaxy 4.4.2上进行了测试,两种输出格式都没有问题。但是我无法在Android 5.x和Android 6.x上播放m4a文件。 aac文件不播放所有三个平台。但所有文件(3gp,m4a,aac)都在Windows 10上播放。我不知道为什么。