繁体   English   中英

如何使用camera2修改帧率?

[英]How to modify frame rate using camera2?

我正在尝试修改帧速率(降低它)以便我们可以对其进行实时操作。 但不能改变帧率。

可能的解决方案包括:

  • 更改CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES

  • 延迟setRepeatingRequest

我们需要降低传递给Surfaceholder的生成帧速率,以便可以进一步应用于其中的操作。

正如评论中所建议的,我设法找到了解决方案并回答了我自己的问题,关于我是如何解决问题的。

我们首先创建一个mPreviewRequestBuilder对象并使用它来修改帧率。

private CaptureRequest.Builder mPreviewRequestBuilder;
// We set up a CaptureRequest.Builder with the output Surface.
mPreviewRequestBuilder
                = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.addTarget(surface);        

我们可以通过创建一个Range数组并手动设置它来实现更改,如下所述。

Range<Integer>[] fps = new Range[size];

将自定义值添加到 Range 类。

fps[0] = Range.create(2,5);

一旦我们设法创建了一个 Range 数组,我们就可以按如下所述设置相机设置:

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,fps[0]);
mPreviewRequest = mPreviewRequestBuilder.build();
Range<Integer> fpsRange = new Range<>(30,60);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,fpsRange);

此代码有效并设置目标 fps 范围。 但是我能够在 S9 plus 上将值设置为 30,60,它提供了大约 45 FPS。 即使 [30,60] 在范围内不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM