【发布时间】:2014-05-03 04:18:34
【问题描述】:
所以正如标题所说,我收到了 mediaRecorder 停止异常 -1007,但这并不是重点。
要明确我的问题是如何避免出现指定错误,并为正在运行的设备录制最优质的音频。
我需要能够在任何具有 >=API16
MIC 的 Android 设备上录制高质量音频这是我正在使用的代码,包括注释掉之前的工作:
public class RecordingHandler {
private static MediaRecorder recorder;
static void beginRecording(String output) throws Exception {
ditchMediaRecorder();
File outFile = new File(output);
if (outFile.exists())
outFile.delete();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(output);
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//this was working before
// recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
// recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// recorder.setOutputFile(output);
//
// try {
// recorder.prepare();
// } catch (IOException e) {
// Log.e("Recording Handler", "prepare() failed");
// }
// recorder.start();
}
static void ditchMediaRecorder() {
// if we have the recorder, release it
if (recorder != null)
recorder.release();
}
static void stopRecording() {
if (recorder != null) {
recorder.stop(); //error happening here
recorder.reset();
recorder.release();
recorder = null;
}
}
}
当前错误:
05-02 21:00:29.443: E/MediaRecorder(28252): stop failed: -1007
05-02 21:00:29.443: E/InputEventReceiver(28252): Exception dispatching input event.
05-02 21:00:29.443: E/MessageQueue-JNI(28252): Exception in MessageQueue callback: handleReceiveCallback
05-02 21:00:29.443: E/MessageQueue-JNI(28252): java.lang.RuntimeException: stop failed.
05-02 21:00:29.443: E/MessageQueue-JNI(28252): at android.media.MediaRecorder.stop(Native Method)
05-02 21:00:29.443: E/MessageQueue-JNI(28252): at com.appulse.beatbox.RecordingHandler.stopRecording(RecordingHandler.java:56)
如果您的答案包含“THREE_GPP”或“AMR_NB”字样,则根本不会被接受,因为其中的音频完全是垃圾。
感谢任何可以提前帮助的人,如果我看起来有点生气,我很抱歉,这真的很烦人。
【问题讨论】:
标签: android audio audio-recording android-mediarecorder