我试图使用ogg vorbis格式录制音频捕捉, 但是在调用start()时我得到一个IllegalStateException 使用mp3格式时一切都很好 我的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)