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

时间:2013-04-29 08:46:36

标签: android opengl-es mediarecorder

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

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

我使用以下sample作为基本代码

我想知道......

  1. 这是正确的方法吗? 。还有更好的替代品吗?
  2. 链接中提供的样本测试正在记录EGLSURFACE的音频和视频,但显示不正确。
  3. 可能是什么原因?
    任何帮助/指示都非常感激。

    感谢,
    萨蒂什南比亚

1 个答案:

答案 0 :(得分:14)

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

<强>更新 Android 4.3(API 18)允许Surface inputMediaCodecEncodeAndMuxTest示例演示了如何将OpenGL ES帧记录到.mp4文件中。

MediaRecorder类不接受Surface输入,因此在您的情况下,您需要单独录制音频,然后将其与新的MediaMuxer类合并。

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

MediaProjection类对屏幕录制也很有用。