捕获视频中的openGL图形

时间:2011-02-16 17:05:00

标签: opengl ocaml video-capture glut

我编写了一个openGL应用程序,想要生成Glut窗口中显示的图形视频。你知道怎么做吗?

从SO的previous question开始,我知道一种可能的解决方案是使用glReadPixels获取openGL渲染的帧,然后使用FFmpeg library生成视频。我真的不知道如何使用FFmpeg,所以我不确定如何编写一个程序来获取帧并输出视频。虽然原始问题中的链接已被删除,但我发现了this example视频编码,这对于任何想要帮助的人都有用。

两个问题:

  1. 如何使用FFmpeg编写一个带帧并输出视频的程序?
  2. 我的应用程序是用OCaml编写的,所以我使用lablgllablglut。关于如何在这种情况下实施FFmpeg想法的任何想法?

3 个答案:

答案 0 :(得分:3)

您可以使用libpng将帧写入单个PNG文件,然后使用命令行ffmpeg工具将其编码为视频。

答案 1 :(得分:2)

png应答器的变体:输出到bmp。在Paint(或Mac上可用的任何东西)中创建相同大小的白色图像,用记事本打开它,隔离文件头(对于800 * 600它是42 4D 36 F9 15 00 00 00 00 00 36 00 00 00 28 00 -00 00 20 03 00 00 58 02 00 00 01 00 18 00 00 00-00 00 00 F9 15 00 00 00-00 00 00 00 00 00 00 00 00 00 00 00 00 27),追加glReadPixels的结果,冲洗,关闭。

所以是的,很多文件,但通常不是问题,因为大多数openGL应用程序都不会使用硬盘太多。

(我知道,这很脏,但这是最简单的实施方法 - 我曾在火车上做过一次,没有任何文件)

答案 2 :(得分:0)

要为演示捕获视频,最好的方法可能是fraps