我想修改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来固定帧速率。
谢谢。
发布于 2018-02-17 05:46:00
首先,请注意,您所询问的摄像头接口在3年多前就被弃用了。新的camera2应用程序接口提供了对捕获的所有方面的更多控制,包括帧速率。
尤其是,如果您的目标是流畅的视频录制。实际上,MediaRecorder在较老的设备上可以很好地执行其工作,但我理解,如果您由于某种原因不能使用MediaRecorder,那么这些知识几乎没有实际价值。
通常,支持的fps范围列表包括用于视频记录的固定范围,例如30fps。请注意,您需要选择compliant (recommended)预览(视频)分辨率。
两个主要因素会导致声明范围内的帧率变化:曝光调整和焦点调整。要实现均匀速率,应禁用自动对焦。如果你的相机supports exposure control,你也应该锁定它。避免使用异国情调的“场景”和“效果”。SCENE_MODE_BARCODE和EFFECT_MONO似乎不会造成帧率问题。白平衡也没问题。
还有其他因素会导致帧率波动,这些因素完全在您的控制之下。
发布于 2018-02-18 09:50:39
即使对于旧的相机API,如果设备列出了支持的FPS范围(30,30),那么您应该能够选择此范围,并获得一致的固定视频录制。
不幸的是,一旦场景条件变得太暗,一些设备就会忽略您的帧率请求,并增加超过1/30s的曝光时间。对于许多应用程序,这是首选选项,但此类应用程序应该简单地选择更宽的帧率范围,如(15,30)。
https://stackoverflow.com/questions/48821566
复制相似问题