OpenGL表面的Android视频录制(GLSURFACEVIEW)

Sat*_*sh. 8 android opengl-es mediarecorder

我正在开发一个项目,我们需要记录渲染的OpenGL表面.(例如,如果我们使用GLsurfaceView,我们需要记录表面以及来自MIC的音频)

目前我通过将视频源设置为使用MediaRecorder API VIDEO_SOURCE_GRALLOC_BUFFER.

我使用以下示例作为基本代码

我想知道 ....

  1. 这是正确的方法吗?.还有更好的替代品吗?
  2. 链接中给出的样本测试记录了EGLSURFACE的音频和视频,但显示不正确.

可能是什么原因?
任何帮助/指针真的很感激.

谢谢,
萨蒂什

fad*_*den 17

您引用的代码不是示例,而是执行非公共接口的内部测试代码. SurfaceMediaSource可能会在将来的版本中更改或消失并破坏您的代码.

更新: 的Android 4.3(API 18)允许表面输入MediaCodec.所述EncodeAndMuxTest示例演示记录的OpenGL ES帧到.mp4档案.

MediaRecorder类不采取表面输入,所以在你的情况下,你需要单独录制的声音,然后用新的结合起来MediaMuxer类.

更新#2: Android 5.0(API 21)允许Surface输入到MediaRecorder,这通常比MediaCodec更方便.如果你需要使用MediaCodec,有一个例子显示了在Grafika的 "记录GL活动" 中用它记录OpenGL ES输出的三种不同方式.

MediaProjection类也可以对屏幕录制有用.