【问题标题】:Capture/export JOGL animation to video file捕获/导出 JOGL 动画到视频文件
【发布时间】:2013-09-29 07:33:10
【问题描述】:

如何将 JOGL 动画捕获/导出到视频文件?我知道我可以使用glReadPixels() 通过PBO 抓取每一帧,但是我可以在网上找到一些库/源代码吗?或者是否有更好/更快的方法可以在不渲染整个场景的情况下做到这一点?如果我使用glReadPixels() 方法,如果我调整托管 OpenGL 画布的窗口大小,是否会有不同的捕获图像大小?

我已经阅读了以下文章:

PS:我需要这个适用于 Mac OS X 的软件。

【问题讨论】:

  • 嗨,我按照这些教程做了同样的事情:antongerdelan.net/opengl/videocapture.html 不幸的是源代码是 C++,也许考虑看看它并将其移植到 Java?
  • 非常有趣。感谢您的回答...

标签: java opengl animation video jogl


【解决方案1】:

听起来您已经完成了大部分工作。我不确定某处是否有常用的库,但寻找和使用它可能比仅仅实现它更费力。

当你说“更快的方式而不渲染整个场景”时,当然你需要渲染一些东西来记录它,但是如果你想同时查看它,不要渲染两次。您可以通过 FBO 渲染,然后将图像glBlitFramebuffer 渲染到后台缓冲区,并使用您的glReadPixels 将结果复制回主内存进行编码。

鉴于编码可能需要一些时间,可能值得尝试将结果异步复制回来(一些讨论here)。

将图像直接写入磁盘并稍后使用诸如 ffmpeg 之类的东西编码为视频也很容易,尽管当然不那么方便。

您必须在调整窗口大小时手动调整 FBO 附件的大小。除非您没有使用 FBO,否则我猜 jogl 会为您调整前/后缓冲区的大小。

【讨论】:

  • 好的。首先感谢您的回答。我知道我必须将整个场景/动画渲染为 FrameBufferObject,然后使用 glReadPixels 读取它,将返回的 ByteBuffer 转换为 BufferedImage,然后使用此 bufferedImages 生成视频。但现在的问题是如何从 bufferedImages 编码视频?我知道有 Xuggle 库,但它是在 GPL 版本 3 许可下分发的,我需要分发一个商业软件!那么你知道我可以用来将缓冲图像编码为视频文件的任何其他库吗?
  • AFAIK OpenCV 和 Theora 都是 BSD 和跨平台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多