Cloud Video Upload Issues...
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 38/100
調査の方向性
templates/api_seedance2_0_r2v.json、comfy upload --where cloud、comfy run を使って失敗を再現し、アップロードされたファイルを LoadVideo enum と比較します。app/assets/services/path_utils.py、app/assets/services/ingest.py、および参照されている server.py のアップロード処理を読みます。完了条件は、public upload path が動画を登録し、workflow が validation を通過することです。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Python
- スター
- 1k
- フォーク
- 176
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 87
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Comfy-Org/comfy-cli のほかの issue
-
test_file_utils umask tests assert against a umask the code never reads (import-time _UMASK), so they only pass on a 0o022 host対応中かも @neverbiasu が 10 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
Comfy-Org/comfy-cli#907 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
Comfy-Org/comfy-cli#781 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
`comfy launch --background` fails with FileNotFoundError when comfy-cli is invoked by path対応中かも @RaphaelFakhri が 42 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Comfy-Org/comfy-cli#691 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Comfy-Org/comfy-cli#670 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
Comfy-Org/comfy-cli の issue をすべて見る
似ている issue
-
add entry to blockオープン
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"対応中かも @0z5a が今日担当しました。 オープンneeds-triage
難易度 2/5 半日 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
plot_graph crashes when a mesh node has no m2m edge対応中かも @tygvi が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
mllam/neural-lam#883 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
future-agi/future-agi#4092 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
transcript analytics: a text whose only protected spans the prose pass redacts is withheld wholeオープン
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
WingedGuardian/GENesis-AGI#4641 ·
メンテナーはふだん 1 日以内に返信