Przetwarzanie ramek wideo na Androida

Pracuję nad aplikacją, która przetwarza obraz w czasie rzeczywistym na klatkach aparatu. W tym celu używam metody podglądu wywołania zwrotnego onPreviewFrame.
działa to dobrze w przypadku aparatów obsługujących klatki podglądu o rozdzielczości co najmniej 640x480 lub większej. Ale gdy kamera nie obsługuje tak dużej rozdzielczości podglądu kamery, aplikacja jest zaprogramowana, aby odmówić przetwarzania takich klatek. Mam problem z telefonami typu Sony Xperia Go. Jest to bardzo ładne urządzenie, które może nagrywać wideo do rozdzielczość 1280x720, ale niestety maksymalny rozmiar podglądu kamery to 480x320, co jest zbyt małe jak na moje potrzeby.

Chciałbym się dowiedzieć, jak uzyskać te larger camera frames (do 1280x720 lub więcej)? Oczywiście musi to być możliwe, ponieważ aplikacja kamery ma możliwość nagrywania filmów w tej rozdzielczości - Dlatego ta aplikacja w jakiś sposób musi być w stanie uzyskać dostęp do tych większych klatek. Jak zrobić to samo z mojej aplikacji?

Aplikacja musi obsługiwać Androida 2.1 i nowsze, ale byłbym bardzo szczęśliwy, nawet jeśli znajdę rozwiązanie mojego problemu tylko dla Androida 4.0 lub nowszego.

To pytanie jest podobne do http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording, ale nie muszę zapisywać wideo - potrzebuję tylko tych klatek wideo o wysokiej rozdzielczości...

Z góry dziękuję!
Author: gkn06, 2013-01-16

3 answers

Wydaje się, że jedyne, co można zrobić, to dekodować ramki z danych MediaRecoder. Możesz użyć ffmpeg do dekodowania danych rejestratora z LocalSocket.

Mam nadzieję, że następujące projekty open source mogą pomóc:

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

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

 6
Author: aarontang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-27 07:11:50

Powinieneś rzucić okiem na bibliotekę OpenCV . Posiada metody, które pozwalają na otrzymywanie pełnych ramek.

 0
Author: GreyBeardedGeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-01 13:15:07

Mam wrażenie: rozmiar podglądu wideo jest mały i jest wolny, wolniejszy niż ustawiona liczba klatek na sekundę nagrywania wideo.

Kiedyś próbowałem szukać rozwiązań w tej sprawie. Wydaje się, że lepszym sposobem jest pobranie strumienia wideo z rejestratora wideo, a następnie bezpośrednie przetwarzanie danych ze strumienia wideo.

Możesz znaleźć kilka przykładów na Android ip-camera.

 0
Author: user1914692,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-22 00:23:18