๐ฑ Seedance 2.0 S3 Upload Reference Video
Getting your local clip into Omni's hands
- video
- video_ref
Omni Reference wants a video reference, and you have a clip sitting in ComfyUI/input/. BytePlus will not touch a local file path - its API only accepts URLs, and a path on your disk is not a URL. Seedance 2.0 S3 Upload Reference Video is the bridge: it uploads your local video to S3, generates a pre-signed download URL, and packages everything into the structured video_ref that Omni accepts. One run, and your private clip is reference material.
The node prefers your original file path when it can find it - connect the video output from ComfyUI's Load Video and it uses that video's source path when available, avoiding a re-encode. You can also pick the file from the local_video_file dropdown (files in ComfyUI/input/) or type an absolute path into local_video_path.
The inputs that matter
s3_config_json- the output ofSeedance 2.0 S3 Config. This carries your AWS credentials, region, bucket, and default prefix. Wire it in and the node inherits everything.prefix- optional per-upload override. Leave blank to use the config's prefix (defaultvideo-refs).local_video_file/local_video_path- the source file, either from the dropdown or as a path.video- optional VIDEO input fromLoad Video.expires_in- how long the pre-signed URL stays valid, 60โ86400 seconds, default 300. Read this one twice (see below).
The output is a single video_ref - the SEEDANCE2_VIDEO_REF type - carrying the URL plus S3 metadata (bucket, key, region, credentials) so the Omni node can delete the object afterward if you enable cleanup.
How it works
It resolves the source file, builds the S3 key under the prefix, uploads with the right content type, and presigns a GET URL. The returned video_ref goes into Omni Reference's video_ref_1 (etc.), and you reference it in the prompt as @video1. The recommended loop from the README, including cleanup:
S3 Config โ S3 Upload Reference Video s3_config_json
Load Video โ S3 Upload Reference Video video
S3 Upload Reference Video video_ref โ Omni Reference video_ref_1
Omni Reference delete_s3_references_after_generation = true
The gotcha: pre-signed URLs die fast
The default expires_in is 300 seconds - five minutes. That's plenty for a straight run to Omni, and it's nowhere near enough if you render the ref, save the workflow, and come back tomorrow. The video_ref carries enough S3 metadata that the pack can re-sign URLs when it needs to, but a stale pre-signed URL in a saved ref will fail. Bump expires_in if you're holding refs, and remember that anyone holding the URL can fetch the file until it expires - so keep the window tight and the IAM credentials scoped.
One more thing: keep the reference content safe-filter-friendly. BytePlus moderation is aggressive about identifiable real people in reference material - community reports of InputImageSensitiveContentDetected.PrivacyInformation from reference videos are common. Anonymous or synthesized subjects pass cleanly.
Install: ComfyUI Manager โ Install via Git URL โ https://github.com/nnnnkatsu/seedance2-comfyui-byteplus, restart, and make sure boto3 installed with the pack.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| s3_config_json | STRING | โ | |
| prefix | STRING | Optional per-upload prefix override. Leave blank to use S3 Config, env vars, file config, or video-refs. | |
| local_video_file | COMBO | (none) | 1 options: (none) |
| local_video_path | STRING | โ | |
| expires_in | INT | 30060โ86400 | โ |
| videoopt | VIDEO | Optional video from ComfyUI Load Video. This uses the original file path when available. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_ref | SEEDANCE2_VIDEO_REF | โ |