从GLSurfaceView录制视频和音频并将其导出到.mp4

时间:2015-02-27 11:44:37

标签: android mediacodec mediamuxer

我是OpenGL的新手。 我想从GLSurfaceView录制视频和音频并将其导出为.mp4(或其他格式)。 我有一个GlsurfaceView来实现Renderer

我已尝试在bigflake.com EncodeAndMuxTest.java中使用fadden示例,或google/grafika使用RecordFBOActivity.java,但没有成功,因为我没有'我知道如何实现它。

是否有任何示例或"操作方法"用于录制GLSurfaceView?

2 个答案:

答案 0 :(得分:5)

你可以尝试使用INDE Media for Mobile:https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials GLCapturer类,它允许在几行代码中进行opengl捕获,样本在这里:

https://github.com/INDExOS/media-for-mobile/blob/master/samples/src/main/java/org/m4m/samples/GameRenderer.java

synchronized (videoCapture) {
    if (videoCapture.beginCaptureFrame()) {
        ...

        renderScene();

        videoCapture.endCaptureFrame();
    }
}

enter image description here

答案 1 :(得分:1)

您可以尝试Android Breakout patch。它将游戏记录添加到Android Breakout

使用GLSurfaceView而不是SurfaceView时,主要区别在于GLSurfaceView想要管理自己的EGL上下文。这要求您创建与GLSurfaceView的上下文共享数据的第二个上下文。管理起来有点尴尬,但是可行。

您可能需要考虑从GLSurfaceView切换到SurfaceView。这需要您进行自己的EGL设置和线程处理,但您可以在Grafika中找到两者的示例。设置工作需要做的工作要多得多,但它会让视频录制等更精彩的东西变得更容易。当然,如果你正在使用需要GLSurfaceView的游戏或图形引擎,那么这不是一个选择。