Хорошо, я рассмотрел Fadden's example внедрения Android MediaMux. Я не уверен, как получить мою сцену в поверхностный ввод для мультиплексированного кодека MP4. Я работаю над аудиопроцессором, который поглощает аудио и видео ввода/вывода, поэтому MediaRecord терпит неудачу, но MediaMux звучит как жизнеспособное решение.Android MediaMuxer Присоединение поверхности к вводу кодека
кодека создать inputSurface:
videoInputSurface = codec.createInputSurface();
У меня уже есть реализованный openGLSurfaceView. Я могу получить поверхность с точки зрения, просто позвонив:
myGLSurface = myGLView.getHolder().getSurface();
но это не задает поверхность. Он просто хватает его. Есть ли простой способ получить myGLSurface для записи в videoInputSurface.
Чтобы еще более усложнить вещи У меня есть cameraPreview быть добавлены в тот же ViewGroup В.Г. myGLView записывается:
vg.addView(mCameraPreview);
И myGLView устанавливается прозрачным, так что OPENGL сцена накладывается наверх в cameraPreview.
myGLView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
Есть ли простой способ получить элемент поверхности vg? Чтобы просто поместить то, что записывается в рамку vg на videoInputSurface для кодека?
Спасибо,
Просто, чтобы быть ясным: вы хотите взять кадры из камеры, нарисовать поверх них с помощью OpenGL и отправить результат в видеокодер? Должно ли это появляться и на экране? (Это может помочь перефразировать вопрос с точки зрения того, что вы пытаетесь сделать, а не описывать то, что вы в настоящее время реализовали.) – fadden
Да, это правильно, возьмите кадры с камеры, нарисуйте сверху через OpenGL и отправьте к видеокодеру ... и, очевидно, необходимо предварительно просмотреть или отобразить. Я мог бы написать о том, что я пытаюсь сделать, но я уверен, что это еще больше убьет его, поэтому придерживаться основ. – HPP