Android Camera previewFrame 提高 fps

爱⌒轻易说出口 提交于 2019-12-10 03:50:02

/**
* http://my.oschina.net/lifj/blog/705104
**/

在做Camera预览的时候,通过PreviewFrame()方法获取数据,但是发现fps很低,一直在10~12fps徘徊。

当然,有人推荐使用setPreviewCallbackWithBuffer。试了一下,fps没有明显的提升。虽然没有提升,但还是加上吧,避免camera频繁的创建/销毁内存,引起gc。

 

在stack上搜索,发现一个4.0以后的方法(应该可以了,谁还在开发4.0之前的版本?)

setRecordingHint

添加之后fps明显上升,一直到最高支持fps。

cam = Camera.open();
			cam.setPreviewDisplay(holder);
			Camera.Parameters parameters = cam.getParameters();
			//new
			//3句全加,30fps
			parameters.setRecordingHint(true);//去掉这句,12fps
//			parameters.setAutoExposureLock(true);//去掉这句,30fps
//	        parameters.setAutoWhiteBalanceLock(true);//去掉这句,30fps
	        
			parameters.setFlashMode("off"); // 无闪光灯
			parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
			parameters.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
			parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
			parameters.setPreviewFormat(PreviewFromat_NV21);
			// 这两个属性 如果这两个属性设置的和真实手机的不一样时,就会报错
			parameters.setPictureSize(320, 240);
			parameters.setPreviewSize(320, 240);
			cam.setParameters(parameters);

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!