我正在做一个项目,我们需要记录渲染的 OpenGL 表面。(例如,如果我们使用 GLsurfaceView,我们需要记录表面以及来自 MIC 的音频)
目前我通过将视频源设置为VIDEO_SOURCE_GRALLOC_BUFFER
.
我使用以下示例作为基本代码
我想知道 ....
- 这是正确的方法吗?. 有没有更好的替代品?
- 链接中给出的示例测试正在录制 EGLSURFACE 的音频和视频,但显示不正确。
可能是什么原因?
任何帮助/指针都非常感谢。
谢谢,
萨蒂什
我正在做一个项目,我们需要记录渲染的 OpenGL 表面。(例如,如果我们使用 GLsurfaceView,我们需要记录表面以及来自 MIC 的音频)
目前我通过将视频源设置为VIDEO_SOURCE_GRALLOC_BUFFER
.
我使用以下示例作为基本代码
我想知道 ....
可能是什么原因?
任何帮助/指针都非常感谢。
谢谢,
萨蒂什
您引用的代码不是示例,而是执行非公共接口的内部测试代码。 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类也可用于屏幕录制。