我正在开发一个需要记录渲染的OpenGL表面的项目。 (例如,如果我们使用GLsurfaceView,我们需要记录表面以及来自MIC的音频)
目前我通过将视频源设置为VIDEO_SOURCE_GRALLOC_BUFFER
来使用MediaRecorder API。
我使用以下sample作为基本代码
我想知道......
可能是什么原因?
任何帮助/指示都非常感激。
感谢,
萨蒂什南比亚
答案 0 :(得分:14)
您引用的代码不是示例,而是执行非公共接口的内部测试代码。 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类对屏幕录制也很有用。