{"record":{"id":"7458b942b94c0e8b","repo":"Comfy-Org/ComfyUI","slug":"asset-video-fps-must-be-in-24-60-got-fps-2f","errorCode":null,"errorMessage":"Asset video FPS must be in [24, 60], got {fps:.2f}.","messagePattern":"Asset video FPS must be in \\[24, 60\\], got (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_bytedance.py","lineNumber":3059,"sourceCode":"        # if len(name) > 64:\n        #     raise ValueError(\"Name of asset can not be greater then 64 symbols\")\n        validate_video_duration(video, min_duration=2, max_duration=15)\n        validate_video_dimensions(video, min_width=300, max_width=6000, min_height=300, max_height=6000)\n\n        w, h = video.get_dimensions()\n        if h > 0:\n            ratio = w / h\n            if not (0.4 <= ratio <= 2.5):\n                raise ValueError(f\"Asset video aspect ratio (W/H) must be in [0.4, 2.5], got {ratio:.3f} ({w}x{h}).\")\n        pixels = w * h\n        if not (409_600 <= pixels <= 927_408):\n            raise ValueError(\n                f\"Asset video total pixels (W×H) must be in [409600, 927408], \" f\"got {pixels:,} ({w}x{h}).\"\n            )\n\n        fps = float(video.get_frame_rate())\n        if not (24 <= fps <= 60):\n            raise ValueError(f\"Asset video FPS must be in [24, 60], got {fps:.2f}.\")\n\n        resolved_group = await _resolve_group_id(cls, group_id)\n        asset_id = await _create_seedance_asset(\n            cls,\n            group_id=resolved_group,\n            url=await upload_video_to_comfyapi(cls, video),\n            name=\"\",\n            asset_type=\"Video\",\n        )\n        await _wait_for_asset_active(cls, asset_id, resolved_group)\n        PromptServer.instance.send_progress_text(\n            f\"Please save the asset_id and group_id for reuse.\\n\\nasset_id: {asset_id}\\n\\n\"\n            f\"group_id: {resolved_group}\",\n            cls.hidden.unique_id,\n        )\n        return IO.NodeOutput(asset_id, resolved_group)\n\n","sourceCodeStart":3041,"sourceCodeEnd":3077,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_bytedance.py#L3041-L3077","documentation":"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.","triggerScenarios":"Uploading a 23.976 FPS film export, a 15 FPS animation, or a 120 FPS game capture to the video asset creation node.","commonSituations":"Film-source references at 23.976; slow stylistic animations; screen recordings; variable-frame-rate files reporting an outlier FPS via get_frame_rate().","solutions":["Re-encode the clip at 24, 25, or 30 FPS before uploading.","For 120 FPS sources, drop frames or conform to 60 FPS first."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"fps = float(video.get_frame_rate())\nif not (24 <= fps <= 60):\n    raise ValueError(\"re-encode the clip at 24-60 FPS\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Conform 23.976 FPS film sources to 24 or 25 FPS.","Re-encode high-FPS captures (120) down to 60 or lower before upload."],"tags":["bytedance","seedance","asset","video","fps","validation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}