速记,备查。
1、需求场景
拍摄20秒 + 视频质量不能太低 + 视频大小不能超过5M;
2、方案
调用系统相机和自定义相机;
1、调用系统相机(不满足需求)
视频质量只能设置高(1)和低(0),高的话,拍出来的视频太大;低的话,拍出来的视频大小满足,但是质量惨不忍睹;而且,即使设置了拍摄时常,很多手机的计数仍在继续;
2、自定义相机
自定义相机,需要设置的参数很多,尤其是进行视频拍摄。至于如何设置这些参数(SurfaceHolder、Camera、MediaRecorder等),网上的资料很多,可以自行百度。
3、遇到的问题
mediaRecorder.setVideoSize(videoWidth, videoHeight);
在设置拍摄视频的分辨率的时候,小米手机竟然卡死黑屏了,而且我再去用系统的相机,竟然也黑屏了。f**k,相机被玩死了。
首先想到的是,自己设置的分辨率不支持?那怎么获取支持的分辨率呢?
List<Camera.Size> list = mCamera.getParameters().getSupportedPictureSizes();
在Camera的Api中,我们可以获取其参数,进而通过getSupportPictureSizes()获取一个支持的分辨率的列表。从中挑选一个你感觉合适的分辨率设置上就可以了。