Обработка видеофрагментов Android

Я работаю над приложением, которое делает обработку изображений в реальном времени на кадрах камеры. Для этого я использую метод обратного вызова предварительного просмотра onPreviewFrame. Это прекрасно работает для камер, поддерживающих рамки предварительного просмотра, которые имеют разрешение не менее 640x480 или больше. Но когда камера не поддерживает такое большое разрешение предварительного просмотра камеры, приложение запрограммировано на отказ от обработки таких кадров. Теперь проблема у меня с телефонами, такими как Sony Xperia Go. Это очень приятное устройство, которое может записывать видео до разрешения 1280x720, но, к сожалению, максимальный размер предварительного просмотра камеры составляет 480x320, что слишком мало для моих нужд.

Я хотел бы знать, как получить эти larger camera frames (до 1280x720 или более)? Очевидно, это должно быть возможно, потому что приложение камеры имеет возможность записывать видео в этом разрешении, поэтому это приложение каким-то образом должно иметь возможность доступа к этим более крупным кадрам. Как сделать то же самое из моего приложения?

Приложение должно поддерживать Android 2.1 и более поздние версии, но я был бы очень рад, даже если найду решение для своей проблемы только для Android 4.0 или новее.

Этот вопрос похож на http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording, но мне не нужно сохранять видео - мне нужны только кадры с высоким разрешением...

Спасибо вам заблаговременно!

3 ответа

Кажется, единственное, что вы можете сделать, это декодирование кадров из данных MediaRecoder. Вы можете использовать ffmpeg для декодирования данных рекурсора из LocalSocket.

Надеемся, что следующие проекты с открытым исходным кодом могут помочь:

ipcamera-for-android: https://code.google.com/p/ipcamera-for-android/

spydroid-ipcamera: https://code.google.com/p/spydroid-ipcamera/


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

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

Вы можете найти несколько примеров на ip-камеру Android.


Вероятно, вам стоит взглянуть на библиотеку OpenCV. Он имеет методы, позволяющие получать полные кадры.

licensed under cc by-sa 3.0 with attribution.