I got a hint from @lyron.
First open the front camera.
int cameraId = -1; int camNums = Camera.getNumberOfCameras(); for( int i = 0 ; i < camNums ; i++) { CameraInfo info = new CameraInfo(); Camera.getCameraInfo(i, info); if( info.facing == CameraInfo.CAMERA_FACING_FRONT ) { cameraId = i; break; } } mCamera = Camera.open(cameraId); mCamera.unlock();
I need to use the front camera as above.
AND DON'T FORGET to unlock the camera.
If you do not, you will see errors below.
E/MediaRecorder(15509): start failed: -19 E/SampleVideoRecorder(15509): Exception : E/SampleVideoRecorder(15509): java.lang.RuntimeException: start failed. E/SampleVideoRecorder(15509): at android.media.MediaRecorder.start(Native Method)
Second , install the camera before installing others like this.
recorder = new MediaRecorder(); recorder.setCamera( mCamera ); // like this! recorder.setAudioSource( MediaRecorder.AudioSource.MIC); recorder.setVideoSource( MediaRecorder.VideoSource.CAMERA); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); recorder.setVideoSize( 2560, 1440 ); recorder.setVideoFrameRate(30); recorder.setPreviewDisplay(holder.getSurface()); recorder.setOutputFile( s_dir ); try { recorder.prepare(); recorder.start(); } catch( Exception e ) { Log.e("SampleVideoRecorder", "Exception : ", e ); recorder.release(); recorder = null; }
Someone says that setCamera () should be called before preparing ().
But I see how my code works.
alex
source share