Cloud Video Upload Issues...
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Tái hiện lỗi bằng templates/api_seedance2_0_r2v.json, comfy upload --where cloud và comfy run, sau đó so sánh tệp đã tải lên với enum LoadVideo. Đọc app/assets/services/path_utils.py, app/assets/services/ingest.py và phần xử lý upload được tham chiếu trong server.py; hoàn tất khi một đường dẫn upload công khai đăng ký một video để workflow vượt qua bước validation.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Comfy Cloud: LoadVideo widget enum can't see files uploaded via /upload/image (or comfy upload CLI)
Summary
Third-party apps that submit workflows to Comfy Cloud can upload images for LoadImage-referenced widgets using the documented POST /api/upload/image endpoint (or comfy upload --where cloud), and everything works — the uploaded filename shows up as a valid enum option for LoadImage widgets and the workflow runs.
The same endpoint accepts video files (per the docs and comfyanonymous/ComfyUI server.py:image_upload()), returns a {name, subfolder, type} envelope, but the uploaded filename never appears in LoadVideo's enum — so any workflow that references a user-uploaded video via LoadVideo fails validation with:
{"code": "workflow_unknown_nodes",
"message": "Workflow has 1 validation error(s) against cloud",
"hint": "node <id>: '<subfolder>/<hash>.mp4' not in 1 known options for file
(did you mean: bedroom.mp4?)"}
bedroom.mp4 is a video previously uploaded via the Cloud web UI's LoadVideo "choose file to upload" button, which registers the file with a different (proprietary) asset service. That service's contents populate the enum.
This makes any video-conditioned partner workflow (Seedance 2.0 Reference-to-Video, Depth Anything 3 Video, Kling motion-control, etc.) unreachable from third-party clients using the public CLI/HTTP surface.
Repro
- Fetch canonical R2V template:
templates/api_seedance2_0_r2v.jsonfromComfy-Org/workflow_templates - Inject a
LoadVideonode wired toByteDance2ReferenceNode.video_1(input slot 2, socket typeVIDEO) - Upload a
.mp4(any valid one — 720p, mp4/h264, 5s, 30fps) viacomfy upload <path> --where cloud - Patch the injected
LoadVideo'sfilewidget with the returnedcloud_name - Submit via
comfy run --where cloud --workflow <patched.json>
Expected: workflow runs, uses uploaded video as video_1 reference.
Actual: validation fails with unknown_enum_value for the file field.
Same repro with the direct multipart POST /api/upload/image (all four form fields: image, type=input, overwrite=true, and subfolder=video) fails identically.
What was tried
| Attempt | Result |
|---|---|
comfy upload --where cloud (returns cloud_name) |
file uploads, LoadVideo enum unchanged |
Direct POST /api/upload/image with subfolder="video" |
file lands at video/<hash>.mp4, LoadVideo enum unchanged |
Widget value with subfolder prefix (video/<hash>.mp4) |
same enum error |
Any of the other _KNOWN_SUBFOLDER_TAGS from app/assets/services/path_utils.py:9 (3d, pasted, painter, threed, webcam) |
none tag files as video |
type="video" on the upload form |
server coerces to input (per server.py:get_dir_by_type) |
Root cause (as best I can tell from OSS source)
Cloud's LoadVideo.file widget enum is not populated from ComfyUI's own folder_paths scan of input/. It's populated from a proprietary asset catalog that only receives entries via:
- The Cloud web UI's per-widget "choose file to upload" button (unknown endpoint)
- Explicit partner-nodes like
ByteDanceCreateVideoAsset(which internally callsupload_video_to_comfyapi→POST /customers/storage→ an SDK-scoped signed-URL PUT → thenPOST /proxy/seedance/assets)
Neither path is reachable from comfy CLI or POST /api/upload/image.
Suggested fixes
Any one of these would unblock third-party integrations:
comfy upload --kind video(or--type=video) flag — take a hint from the client, tag the asset appropriately in Cloud's catalog soLoadVideo's enum picks it up.- Expose the Cloud web UI's per-widget upload endpoint publicly (whatever it is), and document it alongside
POST /api/upload/image. Point third-party clients at it. - A
LoadVideoFromUrlcore node analogous toLoadImagebut that fetches a signed URL at runtime — combined with the already-publicPOST /customers/storagethis would give clients a full upload path without needing enum registration. - Automatic mime-type-based tagging in the ingest pipeline (
app/assets/services/ingest.py): if the uploaded file's mime_type starts withvideo/, add avideotag so the LoadVideo enum picks it up. This would make the existingPOST /api/upload/imagework uniformly across media types.
Workarounds attempted
- Extract first frame → use as
image_1. Works, loses motion signal but Seedance runs. - Full
CreateVideochain (extract N frames → NLoadImagenodes → batch →CreateVideo→ByteDanceCreateVideoAsset→asset_1): mechanically possible but requires ~150 injected LoadImage nodes for 5s@30fps and a first-time H5 verification step forCreateVideoAsset'sgroup_id. Not viable as a background/programmatic path.
Environment
comfy-cli(whatever ships in a recent Comfy Desktop bundle)- Cloud
ByteDance2ReferenceNode(comfy_api_nodes/nodes_bytedance.py:2098) - Third-party app in Python, POSTing multipart form to
<cloud_base>/api/upload/image
Impact
Blocks any third-party editor / pipeline that wants to feed user-recorded or programmatically-generated video into a video-conditioned Cloud partner node. Currently the only way for our users to run Seedance 2.0 R2V with their own footage is to drag-drop it into the Cloud web UI manually, which defeats the purpose of an app-driven workflow.
- Ngôn ngữ chính
- Python
- Star
- 1k
- Fork
- 176
- Merge trung bình
- 1 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 87
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Comfy-Org/comfy-cli
-
test_file_utils umask tests assert against a umask the code never reads (import-time _UMASK), so they only pass on a 0o022 hostCó thể đã có người làm @neverbiasu đã nhận 10 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
Comfy-Org/comfy-cli#907 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
Comfy-Org/comfy-cli#781 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`comfy launch --background` fails with FileNotFoundError when comfy-cli is invoked by pathCó thể đã có người làm @RaphaelFakhri đã nhận 42 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Comfy-Org/comfy-cli#691 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Comfy-Org/comfy-cli#670 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Comfy-Org/comfy-cli
Issue tương tự
-
add entry to blockĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"Có thể đã có người làm @0z5a đã nhận hôm nay. Đang mởneeds-triage
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 2 ngày
-
plot_graph crashes when a mesh node has no m2m edgeCó thể đã có người làm @tygvi đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
mllam/neural-lam#883 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
future-agi/future-agi#4092 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
transcript analytics: a text whose only protected spans the prose pass redacts is withheld wholeĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
WingedGuardian/GENesis-AGI#4641 ·
Maintainer thường phản hồi trong vòng 1 ngày