使用FFmpeg(或类似的)将应用程序输出录制到video

我们有一个要求,让用户logging我们的3D应用程序的video。 我已经可以获取单独的渲染帧,所以这个问题是关于如何将帧写入video文件。

我不认为将每个框架作为一个单独的文件编写,后处理是一个可行的select。

我可以查看选项来logging到一个简单的video文件,以便稍后进行优化/编码,或直接写入一个合理的编码格式。

FFmpeg在另一篇文章中被提出,但对我来说看起来有点令人生畏。 是不是最好的select,如果不是可以build议? 我们可以使用LGPL,但不是完整的GPL。

我们在C ++中使用Windows(Win32而不是MFC)。 示例/伪代码与您推荐的库非常赞赏…基本上如何做3个function之后:

  • startRecording()做任何需要的初始化
  • recordFrame()将指针指向帧数据并对其进行编码,理想情况下是使用定时数据
  • endRecording()video文件,closuresvideo系统等

在sourceforge上查看Taksi的源代码。 http://taksi.sourceforge.net/你需要2件事。 1.压缩帧的代码。 2.容器文件格式。 像AVI或MPG。

Taksi使用旧的VideoForWindows API和AVI而不是新的COM API,但它仍然可以为你工作。