微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用监视器录制 OpenAI 健身房视频

如何解决使用监视器录制 OpenAI 健身房视频

我想录制我的 OpenAIs 健身房推广视频。我使用 Monitor 类,但也感谢其他解决方案。这是我创建的一个最小示例,运行时没有异常或警告:

import gym
from gym.wrappers import Monitor
env = Monitor(gym.make('CartPole-v0'),'./video',force=True)
state = env.reset()
done = False
while not done:
    action = env.action_space.sample()
    state_next,reward,done,info = env.step(action)
env.close()

这会将视频和一些元数据保存到 './video' 文件夹。但是,保存在那里的 mp4 文件始终只有 262 字节的大小,并且“文件不包含可播放的流”。所以它似乎是一个“视频”,但由 0 帧组成?我不明白问题是什么以及如何从这里调试。

解决方法

这实际上是一个已修复的错误 here

,

请先确保您有 FFmpeg

brew install ffmpeg

一种方法是在 Xvfd 虚拟显示器中运行代码。

这样做的原因是视频录制,这是通过对环境绘制的窗口进行截图来完成的。某些环境使用 OpenGL 来绘制其图片,因此需要存在带有 OpenGL 的图形模式。

对于云中的虚拟机来说,这可能是一个问题,它在物理上没有运行监视器和图形界面。为了克服这个问题,有一个特殊的“虚拟”图形显示,称为 Xvfb (X11 virtual framebuffer),它基本上在服务器上启动一个虚拟图形显示并强制程序在其中绘制。

要在 Xvfb 环境中启动您的程序,您需要在您的机器上安装它(这通常需要安装 xvfb 包)。

需要下载和设置的一些资源:

Link 1

Link 2

然后使用python文件运行xvfd-run,视频应保存到您指定的目录:

xvfb-run -s "-screen 0 640x480x24" python cartpole_monitor.py

还有其他方法,例如在具有 OpenGL extension(GLX) 的 X11 会话中运行代码或在 X11 连接中使用 SSH 转发。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。