首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调整Android手机摄像头的帧率

如何调整Android手机摄像头的帧率
EN

Stack Overflow用户
提问于 2018-02-16 14:58:28
回答 2查看 13.3K关注 0票数 2

我想修改Android摄像头预览的帧率,比如20fps,或者30fps。然而,我们发现帧速率是不稳定的。

在android文档中,据说帧率在getSupportedPreviewFpsRange中定义的最小帧率和最大帧率之间波动。https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupportedPreviewFpsRange%28%29

我的问题是: 1)哪些因素会影响帧率?曝光时间,白平衡,帧分辨率,后台CPU负载等? 2)有没有办法通过自定义上述因素来固定帧率? 3)在我的项目中,帧率越高越好。如果最终帧速率不稳定。我可以提高最小帧率吗?或者修改最小帧率? 4)看起来视频采集和预览模式有些不同,Android下视频采集的帧率或者最小帧率可以设置吗?

最后,我们发现IOS可以使用videoMinFrameDuration和videoMaxFrameDuration来固定帧速率。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-17 05:46:00

首先,请注意,您所询问的摄像头接口在3年多前就被弃用了。新的camera2应用程序接口提供了对捕获的所有方面的更多控制,包括帧速率。

尤其是,如果您的目标是流畅的视频录制。实际上,MediaRecorder在较老的设备上可以很好地执行其工作,但我理解,如果您由于某种原因不能使用MediaRecorder,那么这些知识几乎没有实际价值。

通常,支持的fps范围列表包括用于视频记录的固定范围,例如30fps。请注意,您需要选择compliant (recommended)预览(视频)分辨率。

两个主要因素会导致声明范围内的帧率变化:曝光调整和焦点调整。要实现均匀速率,应禁用自动对焦。如果你的相机supports exposure control,你也应该锁定它。避免使用异国情调的“场景”和“效果”。SCENE_MODE_BARCODE和EFFECT_MONO似乎不会造成帧率问题。白平衡也没问题。

还有其他因素会导致帧率波动,这些因素完全在您的控制之下。

  1. 确保摄影机回调不会干扰主(UI)线程,并且不会延迟。为了实现这一点,you must open the camera on a secondary HandlerThread。新的camera2应用程序接口使得摄像头回调的线程管理变得更容易。
  2. 不使用setPreviewCallback(),它会自动为每个帧分配像素缓冲区。这对垃圾收集器来说是一个很大的负担,垃圾收集器可能会为了主要的清理工作而偶尔锁定所有线程。
  3. 不要在onPreviewFrame()回调的上下文中执行繁重的计算。将所有工作传递给不同的线程。尽量尽早释放像素缓冲区。
票数 1
EN

Stack Overflow用户

发布于 2018-02-18 09:50:39

即使对于旧的相机API,如果设备列出了支持的FPS范围(30,30),那么您应该能够选择此范围,并获得一致的固定视频录制。

不幸的是,一旦场景条件变得太暗,一些设备就会忽略您的帧率请求,并增加超过1/30s的曝光时间。对于许多应用程序,这是首选选项,但此类应用程序应该简单地选择更宽的帧率范围,如(15,30)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48821566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档