录像:过时的方法setPreviewFrameRate 替代办法

setPreviewFrameRate是在api level1就开始使用了,然后不是简单地设置这个方法就可以让摄像头每秒捕获多少帧数的。
比如我设置2,它一秒不会只捕获2帧数据的,从日志记录来看,相当糟糕,不会是预期的2帧,于是我查找文档,发现这个方法已经废除了。

在api level9时加入了一个方法setPreviewFpsRange (int min, int max)
预览帧数从min到max,这个值再*1000.
这个方法已经在高版本的sdk中取代了旧的setPreviewFrameRate。

如何知道摄像头的预览范围呢?我原以为从1到n,其实不然。
getSupportedPreviewFpsRange()这个方法就可以显示出你的手机摄像头支持的范围。
Java代码  收藏代码
  1. List<int[]> range=parameters.getSupportedPreviewFpsRange();  
  2.         Log.d(TAG, "range:"+range.size());  
  3.         for(int j=0;j
  4.             int[] r=range.get(j);  
  5.             for(int k=0;k
  6.                 Log.d(TAG, TAG+r[k]);  
  7.             }  
  8.         }  

如i9000会是7-30而不是1-30.。。
所以在Camera.PreviewCallback回调中,onPreviewFrame会得到的帧数就不会小于7了。

我还一直以为预览帧数是2,看到的画面还是很流畅。。。

Java代码  收藏代码
  1. 文档里还有这么一段话:  
  2. Gets the supported preview fps (frame-per-second) ranges. Each range contains a minimum fps and maximum fps. If minimum fps equals to maximum fps, the camera outputs frames in fixed frame rate. If not, the camera outputs frames in auto frame rate. The actual frame rate fluctuates between the minimum and the maximum. The values are multiplied by 1000 and represented in integers. For example, if frame rate is 26.623 frames per second, the value is 26623.  
  3.   
  4. 如果最大值与最小值是一样的,就是以这个值输出预览,如果不同,则会以这个区间自动输出。  
  5. 看上去,预览帧数还是不可控制的啊 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值