Как узнать максимальный поддерживаемый fps устройством Android на уровне API?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как узнать максимальный поддерживаемый fps устройством Android на уровне API?

Сообщение Anonymous »

При поиске в Google я получил информацию: если я хочу, чтобы моя камера могла записывать видео с высокой частотой кадров на устройстве Android, мне нужно указать определенные параметры поставщика устройства для вызова API камеры.

Например, вызвав методы, как показано ниже, я мог бы включить постоянную запись приложения камеры Galaxy S6 со скоростью 120 кадров в секунду.

camera = Camera.open();
Camera.Parameters parms = camera.getParameters();

// for 120fps
parms.set("fast-fps-mode", 2); // 2 for 120fps
parms.setPreviewFpsRange(120000, 120000);


Но проблема в том, что не все устройства (включая LG и других производителей) поддерживают частоту 120 кадров в секунду (или выше). Поэтому мне нужно знать максимальную частоту кадров на уровне API в режиме реального времени при запуске приложения камеры для обработки ошибок.

В моем случае Camera.Parameters.getSupportedPreviewFpsRange() у меня не сработало.
Он возвращает максимум 30 000 (что означает 30 кадров в секунду), даже если он может записывать со скоростью 120 000 (120 кадров в секунду). Я думаю, это потому, что запись с высокой частотой кадров (более 30 кадров в секунду) тесно связана с аппаратными свойствами камеры, и поэтому мне нужно вызывать API-интерфейсы конкретного поставщика.

Существует ли общий способ получить максимальную частоту кадров в секунду для устройства камеры на уровне API?

---------------------- РЕДАКТИРОВАТЬ ----------------------

В API21 (LOLLIPOP) мы можно использовать StreamConfigurationMap, чтобы получить максимальное значение для высокоскоростной записи кадров в секунду. Использование показано ниже.

CameraManager manager = (CameraManager)activity.getSystemService(Context.CAMERA_SERVICE);
String cameraId = manager.getCameraIdList()[0];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Range[] fpsRange = map.getHighSpeedVideoFpsRanges(); // this range intends available fps range of device's camera.


Подробнее здесь: https://stackoverflow.com/questions/369 ... -api-level
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»