【问题标题】:Can't set the frame rate when recording a video with VecVideoRecorder使用 VecVideoRecorder 录制视频时无法设置帧率
【发布时间】:2023-02-06 22:25:03
【问题描述】:

我有一个有效的 RL 模型并设置为我制作视频 - 但是因为模型相当好,所以视频很短(达到目的地更好 = 更短)

有没有办法降低视频输出的帧率?我知道这可以用 gif 来完成。而且它可以用 ffmpeg 完成,但我无法锻炼如何传递它。

我已经将我环境中的 fps 从 50>10 降低,期望视频的长度是原来的 5 倍,但这没有用。

拯救我 stackoverflow 你是我唯一的希望。 (除了在 github 上发帖)

【问题讨论】:

    标签: reinforcement-learning openai-gym stable-baselines


    【解决方案1】:

    当您说您将 fps 从 50 降低到 10 时,我假设您更改了 env.metadata.video.frames_per_second,它初始化为 50(对于小于 0.22.0gym 版本):

    {
      'render.modes': ['human', 'rgb_array'],
      'video.frames_per_second': 50
    }
    

    gym 0.22.0 开始,VideoRecorder 类获得frames_per_sec 来编写视频:

    env.metadata.get("render_fps", 30)
    

    设置env.metadata["render_fps"] = 4 会导致视频变慢。

    【讨论】:

    • 谢谢,我已经在环境中设置了 render_fps。我都试过了: env.metadata['video.frames_per_second']=4 env.metadata["render_fps"] = 4 他们都没有什么不同。这可能是一个 anaconda 实现的东西——我认为它仍然是 gym=0.21
    • 看起来是当前,或者说是上周 2023/02/01,anaconda SB 使用 gym=0.21。所以它是 'video.frames_per_second':4 它只有在我将它放在环境中时才起作用 - 将它设置为 env.metadata["video.frames_per_second"] = 4 不起作用。
    • 我已将其标记为答案,但我想更新它以说明它们适用于哪些版本将有助于将来参考。谢谢!
    • 我刚刚添加了版本,语法 env.metadata["video.frames_per_second"] = 4 是我唯一可以开始工作的语法。我猜你定义了一个自定义环境并将元数据声明为 JSON。
    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多