android自定义视频拍摄业务逻辑

一、基础前提

在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();

到此结束啦!

    原文作者:胡氏一人
    原文地址: https://www.jianshu.com/p/15d0184f93c9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞