Enregistrer de la Vidéo à l'aide de surface d'affichage android
Je dois créer une application android dans lequel je suis en train d'enregistrer de la vidéo et de capture de l'image à l'aide de surface d'affichage.
Jusqu'à maintenant, je suis capable de capturer de la vidéo, mais face à problème dans l'enregistrement vidéo.
Mon code pour l'enregistrement vidéo est -
onCreate(){
..
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
startRecording();
.
.
}
protected void startRecording() throws IOException
{
if(mCamera==null)
mCamera = Camera.open();
String filename;
String path;
path= Environment.getExternalStorageDirectory().getAbsolutePath().toString();
Date date=new Date();
filename="/rec"+date.toString().replace(" ", "_").replace(":", "_")+".mp4";
File file=new File(path,filename);
mrec = new MediaRecorder();
mCamera.lock();
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setOutputFile(path+filename);
mrec.setMaxDuration(10000);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(width, height);
try {
mCamera.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.setParameters(parameters);
mCamera.startPreview();
}
mais l'application de la force de fermeture lorsque onSurfaceChange le code de la méthode est appelée à la ligne -
mCamera.setPreviewDisplay(surfaceHolder); à l'exception java.lang.RuntimeException: setParameters échoué
alors, comment puis-je gérer pour que je puisse commencer l'enregistrement vidéo.
Merci à l'avance.
Il est en échec, parce que pas tous les dispositifs de soutien arbitraire de la taille d'aperçu. Apparemment, certains ne mais vous ne pouvez pas compter sur elle.
alors, comment puis-je gérer ce problème.
Vérifier ma réponse ci-dessous et il doit être fait à l'intérieur de
Suivez ce lien github.com/krazykira/CuXtomCam/blob/master/...
L'exemple complet que j'ai posté n'a pas vous aider?
alors, comment puis-je gérer ce problème.
Vérifier ma réponse ci-dessous et il doit être fait à l'intérieur de
surfaceChanged
méthode.Suivez ce lien github.com/krazykira/CuXtomCam/blob/master/...
L'exemple complet que j'ai posté n'a pas vous aider?
OriginalL'auteur Ravi Bhandari | 2014-05-30
Vous devez vous connecter pour publier un commentaire.
Vérifier ce code, j'espère que ça fonctionne..
Autorisations
FICHIER XML
Créer un Fichier pour l'enregistrement d'une image ou d'une vidéo
si je veux augmenter le temps d'enregistrement ?
Je suis capable d'enregistrer de la vidéo à l'aide de votre code..maintenant, il est possible de capturer une image à la fois lorsque l'enregistrement est en cours?
hii.. @Aniruddha, je suis capable d'enregistrer de la vidéo, mais mon application est détruit automatiquement une fois que l'enregistrement est terminé après 10sec.. pouvez vous me dire la raison derrière tout cela? je vous remercie à l'avance
À l'intérieur de mToggleButton.setOnClickListener méthode, il est fini() après le bloc catch, s'il vous plaît commentaire finish(), alors votre application ne se ferme pas.
OriginalL'auteur Aniruddha
Vous pouvez obtenir une liste de taille d'aperçu en appelant getSupportedPreviewSizes dans l'Appareil photo.Les paramètres de l'objet retourné par la Caméra.getParameters. Vérifiez ici
Ajouter ces code ci-dessous à l'intérieur de
surfaceChanged
méthodeMODIFIER Changer votre
surfaceChanged
méthode comme ci-dessous et vérifiezremplacer
getSupportedPreviewSizes
avecgetPreviewSize
et vérifier.Liste<Caméra.Taille> tailles = (List<Taille>) des paramètres.getPreviewSize(); renvoie également la valeur null
Pouvez-vous vérifier avec différentes portable?
renvoie la valeur null pointer exception
OriginalL'auteur Aniruddha