Ответ 1
Мы успешно модифицировали образец камеры2video, чтобы получить скорость передачи данных в 120 кадров в секунду на Samsung S6.
Код здесь.
Нам еще не удалось извлечь пиксели, но будет обновляться здесь, когда мы будем делать.
Мы хотели бы обрабатывать данные предварительного просмотра камеры с частотой кадров в секунду (или 60 кадров в секунду) с использованием неоновых сборок или графических шейдеров для выполнения простой операции обработки изображений (например, свертки 3x3). Мы НЕ заинтересованы в отображении изображения на экране, поэтому данные камеры должны перейти непосредственно к SurfaceTexture.
Мы думали, что можем сделать это, используя Camera2 API на Nexus 5, используя CameraConstrainedHighSpeedCaptureSession, но не увенчались успехом.
В настоящее время нет функционального кода в Интернете (по крайней мере, часть, которую мы очистили), что позволяет это, и все же кажется вероятным, что функциональность существует.
Лучший пример использования Camera2 API для высокоскоростной записи: https://github.com/PkmX/lcamera
Чтобы попытаться побудить кого-то опубликовать решение, я помещаю щедрость на этот вопрос.
Мы успешно модифицировали образец камеры2video, чтобы получить скорость передачи данных в 120 кадров в секунду на Samsung S6.
Код здесь.
Нам еще не удалось извлечь пиксели, но будет обновляться здесь, когда мы будем делать.
Это выполняется в pjsip. Потяните репо на свою машину:
svn checkout -r 4687 https://svn.pjsip.org/repos/pjproject/trunk
Затем откройте папку pjmedia/src/swig
для примера приложения, которое выводит видеоданные, входящие в провод, непосредственно на SurfaceTexture
.
Я загрузил два наиболее важных исходных файла C (с первого взгляда - есть, конечно, другие) для вас, здесь:
Естественно, эти файлы содержат много ненужного кода для вас, но, надеюсь, у вас есть фрагмент, который вы ищете.
Вам может потребоваться сначала выполнить некоторые инструкции найденные здесь, чтобы сгенерировать файлы pjmedia/src/pjmedia-videodev/android/PjCamera*.java
, которые обрабатывают минималистическую Java/C если вы не знаете, как это сделать. Я смог выполнить их инструкции - используя точно такие же версии для NDK (работает с 10d или 10e) и openssl (1.0.2a), и успешно создавайте видео и создавайте собственное приложение. Этот источник выполняет именно то, что вы ищете, если вы просто модифицируете захват видео C-уровня, чтобы использовать ваш API через крючки JNI так же, как и они.
Для примера использования JNI-перехватчиков для изменения API, посмотрите на свою папку audiodev в pjmedia.
Если вы строите свой проект, обязательно следуйте инструкциям в самом низу для новых версий NDK для построения openssl 1.0.2a
. Обратите внимание на капитал "C" на. /Configure, поскольку выполнение стандартного. /configure может привести к неправильному процессу настройки. Я предлагаю копировать и вставлять их предоставленные команды в script. Вы можете пропустить openssl полностью для своих целей; Я только смог заставить мои устройства Android регистрировать учетные записи SIP последовательно, как только я включил поддержку openssl.