如何使用camera2修改帧率?

时间:2018-12-28 10:51:47

标签: java android android-camera android-camera2

我正在尝试修改帧速率(降低帧速率),以便我们可以对其进行实时操作。但是无法更改帧速率。

可能的解决方案包括:

  • 更改CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES

  • 延迟setRepeatingRequest

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

2 个答案:

答案 0 :(得分:1)

byte[]

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

答案 1 :(得分:0)

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

我们首先创建一个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();