При поиске в 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
Как узнать максимальный поддерживаемый fps устройством Android на уровне API? ⇐ Android
Форум для тех, кто программирует под Android
1770365150
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/36904707/how-to-know-maximum-supported-fps-by-android-device-on-api-level[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия