【问题标题】:Produce video from OpenGL C program从 OpenGL C 程序生成视频
【发布时间】:2011-02-08 11:49:06
【问题描述】:

我有一个运行科学模拟并在 OpenGL 窗口中显示可视化的 C 程序。我想把这个可视化做成一个视频,最终会在 YouTube 上播放。

问题:从 C/OpenGL 程序制作视频的最佳方法是什么?

我过去的做法是使用屏幕捕获程序,但这非常耗费人力(必须启动/停止屏幕捕获程序,保存视频文件等...)。似乎应该有一种方法可以自动化从 C 程序中制作视频的过程。然后我可以让它整夜运行,早上有 20 个视频要浏览,然后选择最好的一个放到 YouTube 上。

YouTube recommend“MPEG4 (Divx, Xvid) 格式,640x480 分辨率”。

我正在使用GLUT 3.7.6_3,如果这有什么不同的话。如果有充分的理由,我可以更改窗口系统。

我运行的是 Windows (XP),因此更喜欢在 Windows 上运行的答案,但 Linux 答案也可以。如果在 Windows 上无法轻松完成视频制作,我可以使用 Linux。我有一个朋友为视频的每一帧制作了一个 .png 图像,然后在 Linux 上使用“mencoder”将它们拼接在一起。

【问题讨论】:

  • 保存单个帧并在外部工具中转换为视频(mencoder 可能是一个不错的猜测)对我来说是最好的解决方案。
  • 在此处查看有关主题的更大讨论:stackoverflow.com/questions/154730/…
  • @DavidM:非常感谢 - 这真的很有用。

标签: c windows opengl video


【解决方案1】:

您可以使用 glReadPixels 函数(请参阅example

但是,如果您要显示的内容是由简单的对象(即球体、杆等)组成的,我会将每一帧“导出”到 POV-ray 文件中,渲染它们,然后制作视频从这些照片中。你会达到这样的更高质量。

【讨论】:

  • 并不是说它对于这个特定实例来说太重要了,但是使用 PBO 比 glReadPixels() 更有效,因为 PBO 允许 DMA。
【解决方案2】:

使用像FRAPS 这样的第三方应用程序为您完成这项工作。

Fraps 可以捕获音频和视频 2560x1600 自定义帧率 每秒 1 到 120 帧!

所有电影都以优秀的方式录制 质量。

他们在网站上有视频示例。他们看起来不错。

编辑:

您可以执行一个工具来记录您的 C 应用程序中的屏幕,方法是像 system("C:\screen_recorder_app.exe -params") 这样调用它。检查camstudio,它有一个命令行版本。

【讨论】:

  • 谢谢,但这似乎只是一个常规的屏幕捕获程序。你可以从 C 程序中运行它吗?
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2017-03-01
  • 2012-03-08
  • 2012-11-16
相关资源
最近更新 更多