0

我正在尝试使用 ogg vorbis 格式录制音频捕获,但是在使用 mp3 格式时调用 start() 时出现 IllegalStateException 一切都很好我的 MediaRecorder 代码 snnipet:

如果可以选择将 MediaRecorder 与 Opus 编码器一起使用,那很好,我想要一个例子。我正在寻找一种免费的记录格式,所以我不能使用 mp3。

 private void startRecording() {
    if (IsRecording()) {
        stopRecording();
    }
    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
   // mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM);
    mRecorder.setOutputFile(mFileName);
    //mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.VORBIS);
    StartRecording = false;
    try {
        mRecorder.prepare();
    } catch (IOException e) {
        Log.e(LOG_TAG, "prepare() failed");
    }

    mRecorder.start();
    StartRecording = true;

}

我的日志:

    FATAL EXCEPTION: main
 java.lang.IllegalStateException
     at android.media.MediaRecorder.native_start(Native Method)
     at android.media.MediaRecorder.start(MediaRecorder.java:784)
     at com.sparkup.device.AudioCapture.startRecording(AudioCapture.java:92)
     at com.sparkup.device.AudioCapture.onRecord(AudioCapture.java:43)
     at com.sparkup.device.SparkupActivity$10.run(SparkupActivity.java:803)
     at android.os.Handler.handleCallback(Handler.java:739)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:135)
     at android.app.ActivityThread.main(ActivityThread.java:5349)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
4

0 回答 0