8

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

目前我通过将视频源设置为VIDEO_SOURCE_GRALLOC_BUFFER.

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

我想知道 ....

  1. 这是正确的方法吗?. 有没有更好的替代品?
  2. 链接中给出的示例测试正在录制 EGLSURFACE 的音频和视频,但显示不正确。

可能是什么原因?
任何帮助/指针都非常感谢。

谢谢,
萨蒂什

4

1 回答 1

17

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

更新: Android 4.3 (API 18) 允许Surface 输入MediaCodec. EncodeAndMuxTest示例演示了OpenGL ES 帧记录到 .mp4 文件。

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

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

MediaProjection类也可用于屏幕录制。

于 2013-05-08T17:42:57.120 回答