Объединяйте видео и фотографии с переходами, используя OpenGL ES и MediaCodec - PullRequest
2 голосов
/ 14 июня 2019

Я пытался найти много постов или учебных пособий о том, как работать с OpenGL ES 2 в Android, однако я смог найти тот, который мне нужен. Моя проблема состоит в том, чтобы сделать видео слайд-шоу из комбинации видео и фотографий .

Я потратил так много времени на чтение и практику CTS Google, но все еще не мог взять эти коды, чтобы сделать то, что я хотел. Кроме того, я попытался присмотреться к примеру проекта Grafika , в котором есть отличные примеры, из которых я могу извлечь уроки. В результате я в значительной степени понимаю многие вещи, такие как MediaCodec, Codec, MediaFormat, MediaMuxer YUV/RGB, FrameBuffer, Shaders(Vertex, Fragment), Surface, SurfaceTexture, Buffer EGL Stuff, например EGLContext и более.

На самом деле, у меня были некоторые знания о OpenGL и Shader, но я изо всех сил пытался объединить все эти вещи вместе.

Идеи в моей голове (это не работает)

  • Создайте декодер, для декодирования видеофайла которого потребуется Surface. Декодер имеет возможность seek до определенного момента времени.
  • Создание серии кадров фотографии с использованием текстур OpenGL.
  • Создайте шейдер (основной шейдер), который берет все шейдеры видео и фотографий, а затем объединяет их, используя две текстуры (Внешняя текстура). Шейдер позаботится о применении filters как Saturation, Brightness, Contrast, ... ко всему фильму.
  • Создайте класс, который начинается с TextureView, и создайте поток, имеющий контекст OpenGL. И пусть основной шейдер рендерится на него. (тоже самое что и GLSurfaceView)
  • Создайте другой кодировщик, который возьмет основной шейдер и закодирует его в файл с MediaMuxer.

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

Самые вдохновляющие проекты

...