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

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

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

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

我想知道 ….

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

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

谢谢,
萨蒂什

解决方法:

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

更新:
Android 4.3(API 18)允许Surface input到MediaCodec. EncodeAndMuxTest示例演示了如何将OpenGL ES帧记录到.mp4文件中.

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

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

MediaProjection课程也可用于屏幕录制.

上一篇:android-录制回放问题(MediaRecorder MediaPlayer)


下一篇:android-MediaRecorder以1秒的延迟开始.我如何摆脱沉默?