Android MediaRecorder - “échec du démarrage: -19”
Je suis en train de créer un enregistreur vidéo sur Android, et j'ai préparé mon code qui est censé être de travailler, mais j'ai toujours un message d'erreur start failed: -19
.
Voici mon code:
public boolean startRecording() {
try {
camera.unlock();
mediaRecorder = new MediaRecorder();
mediaRecorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
Log.i(TAG, "Error");
}
});
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
Log.i(TAG, "a");
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
Log.i(TAG, "b");
mediaRecorder.setMaxDuration(maxDurationInMs); //set to 20000
String uniqueOutFile = OUTPUT_FILE + System.currentTimeMillis() + ".3gp";
File outFile = new File(uniqueOutFile);
if (outFile.exists()) {
outFile.delete();
}
mediaRecorder.setOutputFile(uniqueOutFile);
mediaRecorder.setVideoFrameRate(videoFramesPerSecond); //set to 20
mediaRecorder.setVideoSize(sView.getWidth(), sView.getHeight());
Log.i(TAG, "c");
mediaRecorder.setPreviewDisplay(holder.getSurface());
mediaRecorder.setMaxFileSize(maxFileSizeInBytes); //set to 50000
mediaRecorder.prepare();
Log.i(TAG, "d");
mediaRecorder.start();
Log.i(TAG, "e");
return true;
} catch (IllegalStateException e) {
Log.i(TAG, "f");
Log.e(TAG, e.getMessage());
e.printStackTrace();
camera.lock();
return false;
} catch (IOException e) {
Log.i(TAG, "g");
Log.e(TAG, e.getMessage());
e.printStackTrace();
camera.lock();
return false;
} catch (RuntimeException e) {
Log.i(TAG, "h");
Log.e(TAG, e.getMessage());
camera.lock();
return false;
}
}
Tous les journaux de débogage (de "a" à "d") sont imprimés dans le journal, il semble donc que toutes les étapes jusqu'à mediaRecorder.prepare()
sont faits correctement. Puis il attrape un RuntimeException
avec message start failed: -19
. Il est similaire question, mais qui ne résout pas mon problème.
Est là une autre raison pour obtenir une telle erreur?
Vous devez vous connecter pour publier un commentaire.
Viens de trouver le bug, dans cette ligne:
après en commentant cette ligne, le code fonctionne parfaitement!
J'ai résolu mon problème une fois, j'ai ajouté ceci pour l'enregistrement vidéo
Pour guide détaillé reportez-vous à cette Open Source Cuxtom Cam
le problème est dans votre
setVideoSize()
code .et pourquoi ce code d'erreur ...
De la recherche que j'ai fait, le code d'erreur -19 vient quand il y a un problème avec la taille de la vidéo comme indiqué par
MediaRecorder#setVideoSize()
d'exécuter ce code , et de voir lequel de l'écran de votre appareil photo dans votre appareil peut prendre en charge :
et la méthode est la suivante :
J'ai eu ce problème avec certains téléphones, j'ai découvert que je ne pouvais pas définir camcoder dimensions de profil dans certains d'entre eux. Mais quand le travaillé pour la problématique des androïdes il a cessé de travailler sur les précédents dispositifs de travail.
Donc à la fin de ma mise en œuvre de la logique était quelque chose comme:
Sorte de corbeille logique, mais qui ont travaillé.
J'ai configuré un projet github à la mise en œuvre, l'essayer: https://github.com/rafaelsilverio/MediaRecorder
J'ai aussi rencontré ce problème et a annoté l'une des deux manières suivantes, parce que le matériel ne prend pas en charge les deux configurations.