一、基础前提
在xml中增加SurfaceView控件。
二、自定视频拍摄业务逻辑
在自定义拍摄视频过程中,有一套非常严格的流程,具体如下:
1、获取相机实例:mCamera=Camera.open();
2、通过相机实例mCamera的setPreviewDisplay()方法,将相机实例与SurfaceView控件连接;
3、启用相机预览mCamera.startPreview(),此时可以看到拍摄的画面了;
4、相机解锁mCamera.unlock (),允许其它进程访问相机;正常情况下,相机是被正在使用的进程锁定的,除非掉了relase()方法,为了实现进程间的快速切换,我们可以调用unlock ()可以短暂的释放相机。且必须在 mediaRecorder.setCamera(camera);之前调用;
5、配置MediaRecorder,如下代码:
//(1)实例化mediaRecorder = new MediaRecorder();
//(2)设置相机mediaRecorder.setCamera(camera);
//(3)设置采集声音mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//(4)设置采集图像mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//(5)输出格式 mp4mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//(6)设置音频的编码格式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//(7)设置图像的编码格式mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
//(8)设置选择角度,顺时针方向,因为默认是逆向90度的,这样图像就是正常显示了,这里设置的是观看保存后的视频的角度mediaRecorder.setOrientationHint(90);
//(9)设置视频的分辨率mediaRecorder.setVideoSize(videoSize.width, videoSize.height);
//(10)设置输出地址mediaRecorder.setOutputFile(filePath);
//(11)设置视频码率mediaRecorder.setVideoEncodingBitRate(5*1024 * 1024);
//(12)设置帧率CamcorderProfile profile=CamcorderProfile.get(CamcorderProfile.QUALITY_720P);mediaRecorder.setVideoFrameRate(profile.videoFrameRate);
//(13)连接surfaceviewmediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
6、准备录制视频mediaRecorder.prepare();
7、开始录制视频mediaRecorder.start();
8、停止录制mediaRecorder.stop();
9、移除视频录制配置mediaRecorder.reset();
10、释放内存mediaRecorder.release();
11、重新锁定相机camera.lock();
12、停止相机预览camera.stopPreview();
13、释放相机camera.release();
到此结束啦!