Запись видео на Android с поверхности OpenGL (GLSURFACEVIEW)

Я работаю над проектом, где нам нужно записать визуализированную поверхность OpenGL. (Например, если мы используем GLsurfaceView, нам необходимо записать поверхность вместе со звуком из MIC)

В настоящее время я использую API MediaRecorder, установив источник видео как VIDEO_SOURCE_GRALLOC_BUFFER .

Я использую следующий образец в качестве базового кода

Я хотел знать ….

  1. Правильно ли это? , Есть ли альтернатива?
  2. Пробный тест, указанный в ссылке, записывает аудио и видео EGLSURFACE, но не отображается правильно.

Что может быть причиной?
Любая помощь / указатели действительно оценена.

благодаря,
Сатиш

Код, который вы ссылаетесь, не является образцом, а скорее внутренним тестовым кодом, который использует непубличный интерфейс. SurfaceMediaSource может измениться или исчезнуть в будущей версии и сломать ваш код.

Обновление: Android 4.3 (API 18) позволяет использовать поверхностный вход для MediaCodec . Образец EncodeAndMuxTest демонстрирует запись кадров OpenGL ES в файл .mp4.

Класс MediaRecorder не принимает поверхностный ввод, поэтому в вашем случае вам нужно будет записать звук отдельно, а затем объединить его с новым классом MediaMuxer .

Обновление №2: Android 5.0 (API 21) позволяет использовать поверхностный вход в MediaRecorder, который часто намного удобнее MediaCodec. Если вы хотите использовать MediaCodec, есть пример, показывающий три разных способа записи вывода OpenGL ES с ним в «запись GL активности» Grafika.

Класс MediaProjection также может быть полезен для записи на экране.