【问题标题】:Record OpenAI gym Video with Monitor使用 Monitor 录制 OpenAI 健身房视频
【发布时间】:2021-01-06 11:49:50
【问题描述】:

我想录制一段关于我推出 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 帧组成?我不明白问题是什么以及如何从这里调试。

【问题讨论】:

    标签: python openai-gym


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      请确保您首先拥有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 会话中运行代码或在SSH 连接中使用X11 转发。

      【讨论】:

        猜你喜欢
        • 2019-02-05
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多