Я пытался найти много постов или учебных пособий о том, как работать с 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
.
Если у вас есть какие-либо идеи, это было бы замечательно, я думаю, что это одна из самых сложных проблем, которую нужно решить, но я думаю, что это будет легко для тех, кто имеет огромный опыт работы с ней.
Самые вдохновляющие проекты