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 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