你如何将"游戏"(PyGame或Tk)录制成视频?

roh*_*hpr 5 python pygame tkinter python-3.x

我想添加一个功能,用户可以录制他们正在播放的游戏视频.我该怎么做呢?

Mik*_*l V 2

我个人还没有实现这个特定问题的解决方案,但我会尝试提出一个解决方案。当然,任何解决方案都会从根本上减慢您的程序速度,但从技术上讲这是可能的。那么什么可能值得尝试,您可以pygame.image.tostring()在当前帧上使用,然后将每个帧写入(附加)到文件中。这实际上是您的原始格式的视频。现在,如果您想要某种特定的视频格式,您应该将其转换,最好的方法是使用ffmpeg(您可以在游戏退出之前使用游戏中的某些参数调用它subprocess.Popen("ffmpeg ..."))。这里唯一的问题是,想要以这种方式录制的用户必须在系统中安装 ffmpeg,以便可以从 shell 命令行调用 ffmpeg。这种方法的优点 - 它应该非常快并且不会使用太多额外的内存,因为您只从二进制流中编码一次(例如当用户停止录制或退出游戏时)。


编辑:这只是一个广泛的描述,当然您还应该找出 ffmpeg 的 wright 参数,例如帧数、大小等,当然还要删除原始数据,因为它可能是非常大的文件。