自定义视频渲染¶
调整视频渲染设置¶
TorchRL 在其视频记录功能上严重依赖 torchvision.io 和 PyAV 模块。尽管这些库非常方便且功能强大,但要访问可用的各种选项和设置并不容易。
本指南旨在阐明自定义视频渲染的通用原则,并向您展示如何手动调整您的 rollout 的渲染设置以满足您的需求。
通用原则¶
最终,torchvision.io 和 PyAV 调用 FFmpeg 库来渲染视频。
换句话说
任何可以输入到 FFmpeg 的内容,我们也可以将其输入到 TorchRL 的
Loggers
中。对于我们希望使用的任何自定义设置,我们必须参考 FFmpeg 的文档
视频渲染自定义示例¶
假设以下代码片段生成的视频非常模糊,即使我们提供了清晰的逐帧图像来拼接它们
from torchrl.envs import GymEnv, TransformedEnv
from torchrl.record import CSVLogger, VideoRecorder
logger = CSVLogger(exp_name="my_exp")
env = GymEnv("CartPole-v1", from_pixels=True, pixels_only=False)
recorder = VideoRecorder(logger, tag="my_video")
record_env = TransformedEnv(env, recorder)
rollout = record_env.rollout(max_steps=3)
recorder.dump()
由于 TorchRL 的默认视频编码器是 H264,因此我们必须更改的设置应包含在此类中。
在本示例中,我们选择 恒定速率因子 (CRF) 为 17
,预设为 slow
,如文档所述。
我们可以通过将所有所需的设置(作为关键字参数)附加到 recorder
中来提高视频质量,如下所示
recorder = VideoRecorder(logger, tag = "my_video", options = {"crf": "17", "preset": "slow"})