Comfy-Org/ComfyUI · error · ValueError

Asset video FPS must be in [24, 60], got {fps:.2f}.

Error message

Asset video FPS must be in [24, 60], got {fps:.2f}.

What it means

Asset videos must have a frame rate between 24 and 60 FPS, checked last among the geometric validations in the Create Seedance Asset video node. get_frame_rate() is coerced to float, so both sub-24 sources (e.g. 23.976 or stop-motion) and high-refresh exports (120 FPS screen recordings) fail.

Source

Thrown at comfy_api_nodes/nodes_bytedance.py:3059

        # if len(name) > 64:
        #     raise ValueError("Name of asset can not be greater then 64 symbols")
        validate_video_duration(video, min_duration=2, max_duration=15)
        validate_video_dimensions(video, min_width=300, max_width=6000, min_height=300, max_height=6000)

        w, h = video.get_dimensions()
        if h > 0:
            ratio = w / h
            if not (0.4 <= ratio <= 2.5):
                raise ValueError(f"Asset video aspect ratio (W/H) must be in [0.4, 2.5], got {ratio:.3f} ({w}x{h}).")
        pixels = w * h
        if not (409_600 <= pixels <= 927_408):
            raise ValueError(
                f"Asset video total pixels (W×H) must be in [409600, 927408], " f"got {pixels:,} ({w}x{h})."
            )

        fps = float(video.get_frame_rate())
        if not (24 <= fps <= 60):
            raise ValueError(f"Asset video FPS must be in [24, 60], got {fps:.2f}.")

        resolved_group = await _resolve_group_id(cls, group_id)
        asset_id = await _create_seedance_asset(
            cls,
            group_id=resolved_group,
            url=await upload_video_to_comfyapi(cls, video),
            name="",
            asset_type="Video",
        )
        await _wait_for_asset_active(cls, asset_id, resolved_group)
        PromptServer.instance.send_progress_text(
            f"Please save the asset_id and group_id for reuse.\n\nasset_id: {asset_id}\n\n"
            f"group_id: {resolved_group}",
            cls.hidden.unique_id,
        )
        return IO.NodeOutput(asset_id, resolved_group)

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Re-encode the clip at 24, 25, or 30 FPS before uploading.
  2. For 120 FPS sources, drop frames or conform to 60 FPS first.
Defensive patterns

Strategy: validation

Validate before calling

fps = float(video.get_frame_rate())
if not (24 <= fps <= 60):
    raise ValueError("re-encode the clip at 24-60 FPS")

Prevention

When it happens

Trigger: Uploading a 23.976 FPS film export, a 15 FPS animation, or a 120 FPS game capture to the video asset creation node.

Common situations: Film-source references at 23.976; slow stylistic animations; screen recordings; variable-frame-rate files reporting an outlier FPS via get_frame_rate().

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/7458b942b94c0e8b. Report an issue: GitHub.