【问题标题】:How to use android camera2 api to record 60 fps video with fixed exposure time如何使用 android camera2 api 以固定曝光时间录制 60 fps 视频
【发布时间】:2017-04-26 08:02:19
【问题描述】:

我想实现一个应用,以固定曝光时间录制 60 fps。作为设备,我有 Google Pixel。由于它的原生相机应用程序可以达到 60 fps 并且它具有硬件级别 LEVEL_3,我认为这不会成为问题,但我无法让它工作。使用getSupportedPreviewFpsRange()(来自camera api)我得到范围[15, 15], [24, 24], [7, 30], [30, 30],使用getHighSpeedVideoFpsRangesFor(来自camera2 api)我得到范围[30, 120], [120, 120], [30, 240], [240, 240], [240, 240]。当我将 [60, 60] 设置为 CONTROL_AE_TARGET_FPS_RANGE 时,出现错误“请求中的 Fps 范围 [60, 60] 不是受支持的高速 fps 范围”。

自定义应用甚至可以录制 60 fps 的视频吗?

如果不是,120 fps 怎么样? (我有 120 fps 的录制工作,但是当我将 CONTROL_AE_MODE 设置为关闭并手动设置 SENSOR_EXPOSURE_TIMESENSOR_SENSITIVITY 时,帧速率再次降低到 30 fps)

【问题讨论】:

    标签: android camera android-camera android-camera2 camera2


    【解决方案1】:

    Pixel 上的 60fps 记录可以在正常的捕捉设置下完成 - 看看 CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,然后创建一个正常的捕捉会话。如果我没记错的话,你必须小心,不要设置太高的分辨率作为输出,因为 60fps 不能在 1080p 以上完成。

    您可以通过StreamConfigurationMap 确认您打算使用的尺寸/格式。

    【讨论】:

    • 感谢 Eddy,我通过视频录制甚至 YUV 捕获(分辨率为 1920x1080)成功地达到了 60 fps。这对 YUV 来说是个惊喜,因为我检查了 YUV_420_88 的最小帧持续时间,最大尺寸(4048x3036)和最小尺寸(160x120)都是 33333333 ns。但是对于尺寸(1920x1080),它确实是 16666666 ns。但是当我手动设置曝光时间和 ios 值时,CONTROL_AE_MODECONTROL_MODEset 设置为 off,帧速率再次下降到 30 fps:我做错了什么吗?还是仅在自动曝光下工作 60fps?
    • 您是否设置了帧持续时间(developer.android.com/reference/android/hardware/camera2/…)?那是第三次手动控制;您需要自行将其设置为 60fps。默认可能是 1/30 秒,而不是 1/60 秒。
    • 是的,我已将 SENSOR_FRAME_DURATION 设置为 16666666,这正是我从 `getOutputMinFrameDuration(ImageFormat.YUV_420_888, new Size (1920, 1080))' 获得的值。我为预览会话和捕获会话执行了您在此处描述的步骤stackoverflow.com/questions/28293078/how-to-control-iso-manually-in-camera2-android,它们都降至 30 fps。
    • 同样在 onCaptureCompleted Callback 中我打印了 CaptureRequest 和 TotalCaptureResult 的 Metainfo,我得到以下信息:request exposure time = 10000000 request iso = 120 reqeust frame duration = 16666668 result exposure time = 9996276 result iso = 120 result frame duration = 33329874 当我将帧持续时间设置为长于 33333333 (1/30fps) 时,例如40000000,它有效。但它不适用于短于 1/30 的持续时间。我做错了吗?
    • 不幸的是,这听起来像是一个设备错误。如果这是在 Pixel 上,您可以在 issuetracker.google.com/issues/… 处打开一个错误
    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多