Android 以AMR文件格式录制音频

Android 以AMR文件格式录制音频,android,audio-recording,mediarecorder,Android,Audio Recording,Mediarecorder,我想以AMR文件格式录制音频。我目前正在使用以下代码录制音频: outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.3gp"; myRecorder = new MediaRecorder(); myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myRecorder.setOutputFormat(MediaReco

我想以AMR文件格式录制音频。我目前正在使用以下代码录制音频:

outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.3gp";

myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setOutputFile(outputFile);
但它会生成.3gp文件。如何获取.amr文件? 将outputfile更改为Sample.amr有效。但这是正确的方法吗?请帮忙

编辑 它现在已经解决了

这是我愚蠢的错误:我使用了
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR\u NB)

应该是-

myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
因此,以下代码用于以AMR格式录制:

outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.amr";

    myRecorder = new MediaRecorder();
    myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
    myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    myRecorder.setOutputFile(outputFile);
指 请尝试以下代码:

    Log.i(TAG,"Record start");
    String outputFile;
    MediaRecorder myRecorder;
    outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "Sample.amr";
    Log.i(TAG,"file name: " + outputFile);

    myRecorder = new MediaRecorder();
    myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
    myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    myRecorder.setOutputFile(outputFile);

    try {
        myRecorder.prepare();
        myRecorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        Thread.sleep(30*1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    myRecorder.stop();
    myRecorder.release();
    Log.i(TAG,"Record finished");
要点:

  • 输出文件名使用“.amr”后缀。输出格式使用OutputFormat.AMR\u NB参数
  • 编码器使用AudioEncoder.AMR\u NB 参数

  • 谢谢但我已经试过了。当我们开始录制时,它会强制关闭应用程序,错误为:start failed-22 java.lang.RuntimeException:start failedId您先调用prepare,然后调用start。如果您可以共享整个文件,这会很有帮助。请检查我编辑的版本,它在moto g设备上工作。你的设备是什么?可能是设备问题。是的,我先打电话准备,然后再开始。我已经扎根三星Galaxy Ace(OS Cyanogen mod 7-2.3.7)。是因为它的根吗?我会在其他设备上进行测试,然后回复您。谢谢,嘿,谢谢!它现在正在工作。那是我愚蠢的错误。我使用了
    myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB)