Как программно записывать высокоскоростные видео (60-120 кадров в секунду) на Android

У меня есть кусок кода, который может использовать камеру Android для записи видео на QUALITY_HIGH с помощью MediaRecorder и API камеры 1.

Код камеры основан на: https://github.com/Glamdring/EasyCamera

И запись видео может выглядеть примерно так: Как записать видео определенной ширины и высоты на Android-устройстве Samsung?

Я могу видеть из документации http://developer.android.com/intl/es/reference/android/media/CamcorderProfile.html, что есть профиль для высокоскоростного видео, но... вызывая это:

 CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

выдает исключение, сказав:

"E / MediaProfiles: данная камера профиля профиля 0 качества 2000 не найдена"

призвание:

 mMediaRecorder.setVideoFrameRate(100);

работает, но выходное видео не 100fps.

и звонит:

 mMediaRecorder.setVideoFrameRate(CamcorderProfile.QUALITY_HIGH_SPEED_LOW);

выдает исключение:

MediaRecorder: setVideoFrameRate не удалось: -22

Я могу использовать встроенное приложение камеры для записи "замедленного видео", которое будет воспроизводить mp4 со скоростью 120 кадров в секунду, поэтому я почти уверен, что устройство может записывать высокоскоростное видео, но что-то, похоже, не хватает.

1 ответ

Сначала проверьте поддерживаемый диапазон fps вашего устройства камеры, используя getSupportedPreviewFpsRange.

Я также провел тест на смартфоне, встроенном в приложение камеры, которое поддерживает замедленное движение и действительно может записывать с высокой частотой кадров (120 кадров в секунду). Но из результатов getSupportedPreviewFpsRange частота кадров не более 30 кадров в секунду.

Я думаю, что производитель изначально не предоставляет интерфейс для записи с высокой частотой кадров, хотя встроенное приложение камеры показывает его аппаратную способность. Я предполагаю, что это потому, что это может привести к неожиданным результатам, таким как повреждение оборудования, если оно не используется должным образом.

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

Однако здесь есть решение для взлома, использующее новый API camera2. Вам нужен root, и он может быть нестабильным.

Другие вопросы по тегам