Android - в режиме реального времени изменение вывода видео файла

Я боролся с этим в течение некоторого времени, нашел несколько тем об использовании TextureSurface, FFmpegFrameGrabber и т. Д., Но до сих пор не имею понятия. Я хотел бы загрузить видеофайл, чем взять кадр и внести некоторые изменения (обработать кадр с помощью JavaCV или OpenCV4Android) и показать его пользователю. Этот процесс должен повторяться для каждого кадра в видеофайле. У кого-нибудь есть подсказка, как это сделать?

1 ответ

Решение

Я еще не использовал FFmpegFrameGrabber прежде, но я использую ffmpeg JNI, написанный мной самостоятельно. Мое решение:

  1. Получите данные кадра (NV21 или BGR24) по ffmpeg.
  2. Обработка данных кадра с помощью моего алгоритма обработки изображений / видео.
  3. Загрузить данные кадра в графический процессор в виде текстуры OpenGL.
  4. Отображение данных с помощью фрагментного шейдера OpenGL в полноэкранном прямоугольнике.

У меня есть другая идея, если 2-я операция может быть записана в шейдерном графическом процессоре (многие эффекты камеры в реальном времени в мобильном устройстве выполняются этим методом). Вы можете использовать MediaPlayer вместо ffmpeg. И написать шейдер GPU для SurfaceTexture.

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