Gym wrapper videorecorder 在 Hopper-v2 环境中无法正常工作。给出分段错误

Posted

技术标签:

【中文标题】Gym wrapper videorecorder 在 Hopper-v2 环境中无法正常工作。给出分段错误【英文标题】:Gym wrapper videorecorder is not working properly on Hopper-v2 environment. Gives segmentation fault 【发布时间】:2021-12-05 08:00:48 【问题描述】:

我正在尝试保存我的 Hopper-v2 环境的渲染视频,但是它给出了分段错误错误。我制作了一个简短的代码示例来重现该问题。

import os
from gym.wrappers.monitoring.video_recorder import VideoRecorder

path_project = os.path.abspath(os.path.join(__file__, ".."))
path_of_video_with_name = os.path.join(path_project, "videotest.mp4")
env = gym.make('Hopper-v2') # for making environment
state = env.reset()
video_recorder = None
video_recorder = VideoRecorder(env, path_of_video_with_name, enabled=True)

for _ in range(1000):
   env.render()
   video_recorder.capture_frame()
   env.step(env.action_space.sample()) # take a random action

print("Saved video.")

video_recorder.close()
video_recorder.enabled = False
env.close()

这给出了错误: 进程以退出代码 139 结束(被信号 11:SIGSEGV 中断)

但它确实会创建一个只有 14 帧长的视频,然后会被中断。通过注释掉“video_recorder.capture_frame()”行,它将呈现完整的剧集。使用 cartpole 环境而不是 hopper,确实有效并保存了整个剧集。

我正在使用 Linux 20.0.4 (Ubuntu),Gym 版本 0.21.0 使用 pip install gym,python 版本 3.7.6。

如果有人知道,请告诉我

【问题讨论】:

好的,使用env = gym.wrappers.Monitor(env, path_of_video_with_name) 确实有效。另一个解决方案给出错误仍然很奇怪 【参考方案1】:

安装以下依赖项;

pip install ffmpeg
pip install imageio-ffmpeg

解决了我的问题。

【讨论】:

以上是关于Gym wrapper videorecorder 在 Hopper-v2 环境中无法正常工作。给出分段错误的主要内容,如果未能解决你的问题,请参考以下文章

Android准备videoRecorder停止预览

videoRecording Failed 摄像头设备遇到严重错误

服务器无法调用gym中的render,采用Monitor保存视频的方法解决

Gym101522A Gym101522C Gym101522D

[RL學習篇][#2] 簡單的grid_mdp測試程式

Gym Gym 101147G 第二类斯特林数