При поиске в 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