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

leo*_*eon 4 android mediacodec mediamuxer

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

我已经使用法登的例子在试图bigflake.comEncodeAndMuxTest.java,或RecordFBOActivity.java谷歌/ grafika但没有成功,因为我不知道如何实现它.

有没有用于录制GLSurfaceView的示例或"操作方法"?

Mar*_*lon 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/Android/samples/apps/src/com/intel/inde/mp/samples/GameRenderer.java

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

        renderScene();

        videoCapture.endCaptureFrame();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


fad*_*den 3

您可以尝试一下Android Breakout 补丁。它为Android Breakout添加了游戏录制功能。

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

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