MediaRecorder.stop () stop fehlgeschlagen: -1007
Ich bin Videoaufnahme mit MediaRecorder. Mein code funktioniert auf 2.3.3 aber schlägt auf 4.0.3.
Das Problem ist Folgendes: der code mediaRecorder.stop() wird die RuntimeExeption
java.lang.RuntimeException: stop failed.
at android.media.MediaRecorder.stop(Native Method)
mit LogCat Meldung
04-05 15:10:51.815: E/MediaRecorder(15709): stop failed: -1007
UPDATE
Habe ich festgestellt, dass MediaPlayer einen Fehler meldet (via MediaPlayer.OnErrorListener) fast sofort nach dem start. Fehlercode 100 (media-server gestorben ist), extra -1007.
UPDATE 2
Code zur Vorbereitung der MediaRecorder
c = Camera.open();
...
//Step 1: Unlock and set camera to MediaRecorder
camera.unlock();
mediaRecorder.setCamera(camera);
//Step 2: Set sources
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
CamcorderProfile profile = CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH);
//manual set up!
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mediaRecorder.setVideoSize(profile.videoFrameWidth,
profile.videoFrameHeight);
mediaRecorder.setAudioChannels(profile.audioChannels);
mediaRecorder.setAudioEncodingBitRate(profile.audioBitRate);
mediaRecorder.setAudioSamplingRate(profile.audioSampleRate);
mediaRecorder.setAudioEncoder(profile.audioCodec);
//mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mediaRecorder.setVideoEncoder(profile.videoCodec);
//mediaRecorder.setProfile(profile);
//Step 4: Set output file
mediaRecorder.setOutputFile("somefile.mp4");
//Step 5: Set the preview output
mediaRecorder.setPreviewDisplay(preview.getHolder().getSurface());
//Step 6: Prepare configured MediaRecorder
try {
mediaRecorder.prepare();
} catch ...
{ release mediaRecorder}
dann habe ich simplyCall mediaRecorder.start()
bitte beachten Sie, dass ich brauche zu kodierenden Videos in das mp4-format.
Dieser code funktioniert auf Samsng Galaxy GIO (android 2.3.3) und nicht wie beschrieben auf der Acer E305 (android 4.0.2)
Irgendwelche Ideen?
Danke.
InformationsquelleAutor der Frage Alex | 2013-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste es endlich.
Das Problem war die Einstellung der Größe der Vorschau, bevor Sie die eigentliche Vorschau für die Kamera. Die Größe der Vorschau MUSS werden, die gleich der ausgewählten video-Größe.
InformationsquelleAutor der Antwort Alex
Zitierte Dokumentation des "stop" - Methode MediaRecorder.java in 4.0.3:
Und die Tatsache, dass der MediaPlayer wird die Meldung "media server died" ist wegen dem gleichen Grund. Kannst du den rest des Codes zu sehen, ob es eine falsche Vorstellung, dass die dieses Problem verursachen können?
InformationsquelleAutor der Antwort Jose L Ugia
Also ich fand diese Fehlermeldung für mich auf die Android-emulator für API-18 (nach der Aufnahme war in Ordnung arbeiten auf spätere Versionen).
Was ich gefunden habe ist, dass wenn ich angerufen hatte
Camera.startPreview()
vor dem initialisieren und starten ab meineMediaRecorder
Instanz, die ich bekommen würde, diestop failed: -1007
log beim AufrufMediaRecorder.stop
aber wenn ich riefCamera.stopPreview()
vor dem initialisieren meinMediaRecorder
video aufzeichnen würde in Ordnung.Ich hoffe, das hilft
InformationsquelleAutor der Antwort kassim