Я использую Camera API 2 для моего примера приложения камеры.Я начал с примера google https://github.com/googlearchive/android-Camera2Video и изменил его, используя знания, полученные по ссылкам, указанным ниже, и базам кодов GitHub:
Android захватывает видео в замедленном режиме
Как реализовать запись видео SlowMotion и TimeLapse с помощью Camera API
Доступ к камере с высоким fps на Android
https://pastebin.com/LVdYkWFR
https://github.com/thesleort/Android-Slow-Motion-Camera2/blob/master/java/CaptureHighSpeedVideoMode.java
Поговорить о коде в ссылках № 4 и 5Код в обоих файлах практически одинаков за исключением метода startPreview()
.Один использует обычный сеанс захвата, т.е. cameraDevice.createCaptureSession()
для предварительного просмотра, а другой использует cameraDevice.createConstrainedHighSpeedCaptureSession()
для предварительного просмотра.Если я использую createConstrainedHighSpeedCaptureSession()
для предварительного просмотра, он работает на одном устройстве, но не на другом, и если я использую createCaptureSession()
для предварительного просмотра, первое устройство идет с пустым белым предварительным просмотром, а второе получает предварительный просмотр просто отлично.И, наконец, запись просто не работает и выдает IllegalStateException
.
. Я не совсем понимаю, как правильно настроить камеру, чтобы предварительный просмотр и захват видео работали для CameraConstrainedHighSpeedCaptureSession
, тип 120 или выше, fps.захватывать сеансы.Я знаю, что setCaptureRate()
поможет мне получить запись замедленной съемки.Но с захватом> 30 кадров в секунду - мое требование.