【问题标题】:Checking Android device camera video supports at least 30fps检查 Android 设备摄像头视频是否支持至少 30fps
【发布时间】:2020-10-15 05:14:44
【问题描述】:

我需要一个函数来告诉我手机的摄像头视频是否支持至少 30fps。 我同时使用 camera1 和 camera2 api,这取决于手机的 camera2 支持(或缺乏)

我想用这个:

val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameras = manager.cameraIdList
for (camera in cameras) {
     val cc = manager.getCameraCharacteristics(camera)
     val fpsRange = cc.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES)!!
-->  Log.d("TAG", "fps : ${fpsRange.find { it.lower == 30 && it.upper == 30 }}") // is this correct?
}

但我不确定这是否是正确的解决方案,我不明白我得到的范围以及我是否选择了正确的 CameraCharacteristics。

【问题讨论】:

    标签: android camera android-camera


    【解决方案1】:

    对于固定的 30fps 帧速率(最小帧速率 = 最大帧速率 = 30),该表达式的计算结果为真。这通常会在所有 Android 设备上得到支持,因为它是标准视频录制所必需的。

    【讨论】:

    • 感谢您的回复。澄清一下——我需要知道编码器将帧压缩为视频的能力,因为我们的算法(最终接收到这个)结果取决于它。所以准确地说——我们至少需要 24 个才能正常工作。我可以简单地检查最后一行:it.lower >= 24 以解决此兼容性检查问题吗?再次感谢您,先生。
    • 您在这里查询的是相机输出能力,而不是编码器编码能力。它们不能保证匹配,但基本上任何设备都会以 30fps 的速度编码以实现典型分辨率(720p、1080p)。如果你真的关心编码器,你应该查询它而不是相机;如果您关心端到端,请查看 CamcorderProfiles,它定义了常见录制用例的端到端设置。
    猜你喜欢
    • 1970-01-01
    • 2010-12-28
    • 2013-08-12
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多