Как я уже говорил в предыдущем посте, я работаю над мобильным приложением Android, ориентированным на визуализацию камеры заднего вида в реальном времени (в частности, я работаю на DJI Phantom 3 Professional с относительным SDK), используя структуру Wikitude для части AR. Благодаря Alex's response, я реализовал свой собственный Wikitude Input Plugin в сочетании с dji's Video Stream Decoding.как получить данные NV21 от камеры DJI Phantom 3 Professional drone
У меня есть некоторые проблемы сейчас. Прежде всего, демоверсия DJI Video Stream Decoding использует FFmpeg для разбора кадров видео и MediaCodec для аппаратного декодирования. Таким образом, он помогает анализировать видеокадры и декодировать данные необработанного видеопотока с камеры DJI и выводить данные YUV. Вы посоветовали мне «получить необработанные видеоданные из dji sdk и передать их в SDK Wikitude»: поскольку для входа в Plugitude Plugin нужен формат YUV 420, который соответствует стандарту NV21, чтобы обеспечить пользовательскую камеру, я должен передать ему вывод данных YUV MediaCodec, правильно?
Об этом пункте я попытался извлечь байтовые буферы из вывода MediaCodec (и это возможно, установив параметр Surface в null в метод configure(), который имеет эффект для вызова обратного вызова и передачи его внешнему прослушивателю), но у меня есть некоторые проблемы с цветами в визуализации, потому что цвет закодированного видео не подходит (синий и красный, кажется, меняются на противоположные, и при движении камеры слишком много шума). (обратите внимание, что когда я передайте Surface not null, после инструкции codec.releaseOutputBuffer (outIndex, true), MediaCodec отображает на ней кадры и показывает видеопоток должным образом, но мне нужно передать видеопоток в плагин Wikitude, и поэтому я должен установить поверхность на null).
Я попытался установить другой MediaFormat.KEY_COLOR_FORMAT, но ни один из них не работает должным образом. Как я могу решить этот вопрос?