我正在尝试使用 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)