最近在做项目的时候,需要将Android camera的帧率尽可能提升到30帧/s,测试的过程发现一些特别的情况,camera api 1和camera api2,在不同手机平台上的表现还不相同。
Camera api 1
camera api1主要有以下两种提升帧率的方法:
- 通过Camera.Parameters进行设置,主要有以下方法
- setPreviewFpsRange(或setPreviewFrameRate)
Camera.Parameters parameters = camera.getParameters(); ··· List<int[]> fpsList = parameters.getSupportedPreviewFpsRange(); if(fpsList != null && fpsList.size() > 0) { int[] maxFps = fpsList.get(0); for (int[] fps: fpsList) { if(maxFps[0] * maxFps[1] < fps[0] * fps[1]) { maxFps = fps; } } //注意setPreviewFpsRange的输入参数是帧率*1000,如30帧/s则参数为30*1000 parameters.setPreviewFpsRange(maxFps[0] , maxFps[1]); //setPreviewFrameRate的参数是实际的帧率 //parameters.setPreviewFrameRate(MAX_FPS); }
- 测试发现,不进行任何帧率相关设置的时候,960P以上的分辨率已经会导致输出帧