Как изменить частоту кадров с помощью камеры2? - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь изменить частоту кадров (уменьшить ее), чтобы мы могли выполнять операции с ней в режиме реального времени.Но не может изменить частоту кадров.

Возможные решения включают в себя:

  • Изменение CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES

  • задержка setRepeatingRequest

Нам нужно уменьшить сгенерированную частоту кадров, передаваемую до Surfaceholder, чтобы в дальнейшем можно было применить к операциям в ней.

1 Ответ

0 голосов
/ 20 января 2019

Как предложено в комментарии, мне удалось найти решение, и я отвечаю на свой вопрос о том, как я решил проблему.

Сначала мы создаем объект 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();
...