需要绘制到MediaRecorder使用的表面

时间:2016-06-07 23:34:37

标签: android surfaceview android-mediarecorder

我需要录制一个只包含一个帧的视频:用户指定的图像(可以是任意长度,但只有相同的静态图像)。所以,我想我可以使用新的MediaRecorder.VideoSource.SURFACE并只绘制到录音机使用的Surface。我正确地初始化了录像机,我甚至可以毫无例外地调用MediaRecorder.getSurface()(这显然很棘手)。

我的问题有点令人尴尬:我不知道如何处理返回的表面。我需要以某种方式绘制它,但我能找到的所有示例都涉及绘制到SurfaceView。此表面是否与MediaRecorder.setPreviewDisplay()使用的表面相同?我该如何绘制它?

1 个答案:

答案 0 :(得分:0)

理论上,如果要在软件中渲染,可以使用Surface#lockCanvas()来绘制Canvas。在某些平台上曾经有problems with this;不确定是否已经修复。

另一个选项是从Surface创建一个EGLSurface并使用OpenGL ES渲染到它上面。您可以在Grafika中找到管理所有EGL设置的代码示例。

GLES录制示例使用MediaCodec而不是MediaRecorder,但想法是一样的,使用MediaRecorder应该更简单。