如何从LWJGL显示器写入视频文件?

时间:2016-01-31 19:06:12

标签: java lwjgl video-processing

所以我已经学会了如何通过从GL_FRONT读取字节缓冲区来获取我的LWJGL显示的屏幕截图:

$ cat book.pdf | :
$ trap "" PIPE
$ cat book.pdf | :
cat: stdout: Broken pipe

我假设我可以继续从前端缓冲区读取大约60次(我知道这会大大降低性能)。然后我可以将一定数量的帧写入一个缓冲区,当它满时将被交换到另一个缓冲区。缓冲区已满后,其内容可以附加到文件中。

如何将字节缓冲区格式化为视频中的帧?

谢谢。

1 个答案:

答案 0 :(得分:1)

你的问题确实很陈旧,但为了完整起见,我还是会回答它。

我的回答太大提供示例或解释。这就是为什么我要链接其他人的教程和官方文档。

  1. 将场景(或其他)渲染为2D纹理。 (http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/
  2. 使用glGetTexImagehttps://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml
  3. 检索纹理数据
  4. 下载用于编码MP4(或任何您想要的)的Java库,并逐帧编码。
  5. 这是一些伪代码:

    create framebuffer
    enable framebuffer
    for all frames {
        render to framebuffer
        glGetTexImage(...)
        library.encodeFrame(imageData)
    }
    

    这非常通用,它在很大程度上取决于您用于编码的库。