From 3dc73551dd2f897978a0727766f02ed4020fd768 Mon Sep 17 00:00:00 2001 From: CarolinePascal Date: Tue, 5 May 2026 11:06:45 +0200 Subject: [PATCH] fix(rollout): propagating VideoEncoderConfig to the latest recording modes --- src/lerobot/configs/dataset.py | 11 ++++++----- src/lerobot/rollout/context.py | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lerobot/configs/dataset.py b/src/lerobot/configs/dataset.py index e3e17e62b..406488a7e 100644 --- a/src/lerobot/configs/dataset.py +++ b/src/lerobot/configs/dataset.py @@ -14,10 +14,12 @@ """Shared dataset recording configuration used by both ``lerobot-record`` and ``lerobot-rollout``.""" -from dataclasses import dataclass +from dataclasses import dataclass, field from datetime import datetime from pathlib import Path +from lerobot.datasets.video_utils import VideoEncoderConfig, camera_encoder_defaults + @dataclass class DatasetRecordConfig: @@ -55,10 +57,9 @@ class DatasetRecordConfig: # Number of episodes to record before batch encoding videos # Set to 1 for immediate encoding (default behavior), or higher for batched encoding video_encoding_batch_size: int = 1 - # Video codec for encoding videos. Options: 'h264', 'hevc', 'libsvtav1', 'auto', - # or hardware-specific: 'h264_videotoolbox', 'h264_nvenc', 'h264_vaapi', 'h264_qsv'. - # Use 'auto' to auto-detect the best available hardware encoder. - vcodec: str = "libsvtav1" + # Video encoder settings for camera MP4s (codec, quality, GOP, etc.). Tuned via CLI nested keys, + # e.g. ``--dataset.camera_encoder_config.vcodec=h264`` (see ``VideoEncoderConfig``). + camera_encoder_config: VideoEncoderConfig = field(default_factory=camera_encoder_defaults) # Enable streaming video encoding: encode frames in real-time during capture instead # of writing PNG images first. Makes save_episode() near-instant. More info in the documentation: https://huggingface.co/docs/lerobot/streaming_video_encoding streaming_encoding: bool = False diff --git a/src/lerobot/rollout/context.py b/src/lerobot/rollout/context.py index 8804cd789..07da355cb 100644 --- a/src/lerobot/rollout/context.py +++ b/src/lerobot/rollout/context.py @@ -332,7 +332,7 @@ def build_rollout_context( cfg.dataset.repo_id, root=cfg.dataset.root, batch_encoding_size=cfg.dataset.video_encoding_batch_size, - vcodec=cfg.dataset.vcodec, + camera_encoder_config=cfg.dataset.camera_encoder_config, streaming_encoding=cfg.dataset.streaming_encoding, encoder_queue_maxsize=cfg.dataset.encoder_queue_maxsize, encoder_threads=cfg.dataset.encoder_threads, @@ -367,7 +367,7 @@ def build_rollout_context( image_writer_threads=cfg.dataset.num_image_writer_threads_per_camera * len(robot.cameras if hasattr(robot, "cameras") else []), batch_encoding_size=cfg.dataset.video_encoding_batch_size, - vcodec=cfg.dataset.vcodec, + camera_encoder_config=cfg.dataset.camera_encoder_config, streaming_encoding=cfg.dataset.streaming_encoding, encoder_queue_maxsize=cfg.dataset.encoder_queue_maxsize, encoder_threads=cfg.dataset.encoder_threads,