【问题标题】:How to compute the max supported frame rate for the camera for given resolution如何计算给定分辨率下相机的最大支持帧速率
【发布时间】:2016-05-23 12:56:02
【问题描述】:

根据此文档:https://developer.android.com/reference/android/media/MediaRecorder.html#setCaptureRate%28double%29:

“对于摄像机可以捕捉到的分辨率,最快 fps 可以使用 getPreviewFpsRange(int[])"

计算

但我找不到任何关于它的例子。

我尝试过:

    List<Camera.Size> sizes = p.getSupportedPreviewSizes();
    p.setPreviewSize(sizes.get(0).width, sizes.get(0).height);
    cam.setParameters(p);

即使用各种分辨率设置预览大小,但之后调用getPreviewFpsRange(int[]) 总是返回相同的结果,例如 Nexus 4 上的 5000 - 30000 或宏碁平板电脑上的 5000 - 60000。这是否意味着这些设备支持所有分辨率的最大 fps,还是我遗漏了什么?

有人知道如何计算每个分辨率的最大 fps 吗?

【问题讨论】:

  • 如果我理解正确的话,这个方法应该返回一个固定的值——一个具有固定最小值和最大值的范围。当您固定分辨率时,FPS 也变得固定(理想情况下,尽管实际上它会有所波动。但是,它仍然接近固定值)。因此,更改分辨率不会更改此设备和相机的 MIN/MAX 值。
  • 我期待当我设置更高分辨率时,fps 范围会有下限...

标签: android android-camera


【解决方案1】:

getSupportedPreviewSizes 现在是 deprecated along with Camera。但是,in AOSP 它只返回了与分辨率无关的固定帧速率范围列表。一些制造商可能已经覆盖了这种行为,但我从未见过它,而且它与特定预览分辨率的关系是不确定的。

在至少一台设备上,我在 1280 x 720 的预览分辨率下获得 30 FPS,在其他所有设备(包括 320 x 240 等低分辨率)下获得 15 FPS。我怀疑图形驱动程序针对特定的预览分辨率进行了优化,但旧的即使驱动程序提供此信息,Camera SDK 也无法共享此信息。

Camera2 界面似乎提供了getHighSpeedVideoFpsRangesFor 形式的解决方案,但我自己没有尝试过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多