arkennemasis fal · Seedance 2.5 Reference to Video · $0.22-1.16/s
Lock a character across shots with Seedance's reference-to-video
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- video_1
- video_2
- video_3
- audio_1
- audio_2
- audio_3
- video
- video_path
- seed
- draft_id
- info
Character consistency is the hard problem in generated video, and it's the reason this node exists next to the plain image-to-video one. Instead of one starting frame, you feed Seedance a library: reference images it refers to as @Image1, @Image2, reference videos as @Video1, reference audio as @Audio1. The model locks the character, the set and the palette, and the prompt tells it what to do with them.
ArkFal_bytedance_seedance_2_5_reference_to_video is the multimodal endpoint of Seedance 2.5, still API-only like the rest of ByteDance's flagship line - its open releases are accelerators and adapters, never the generator. Pricing is per second of output: $0.22 at 480p, $0.47 at 720p, $1.16 at 1080p, with a discount when video references are involved.
What you set
task- the important one, defaultreference.referenceuses your media as guidance.editingmodifies a reference video and automatically coercesaspect_ratioanddurationtoauto.extensioncontinues a reference video and coercesaspect_ratiotoauto. That coercion is silent - if you set a duration and then wonder why it was ignored, this is why. Different jobs, same node.image_1…image_6- up to 30 images total, each under 30MB, JPG/PNG/WebP/BMP/TIFF/GIF/HEIC. Reference them in the prompt as@Image1,@Image2. Each socket can carry a batch, so six sockets is more room than it looks.video_1…video_3- up to 10 reference videos, MP4/MOV, each 1.8–30.2 seconds and under 200MB, with a combined duration under 30.2 seconds. Referred to as@Video1.audio_1…audio_3- up to 10 files, MP3/WAV, same 1.8–30.2 second window, 15MB each.@Audio1.- Total files across all three modalities: 50, which is the real ceiling to plan against.
prompt- where the references get used. Names plus actions; the model is doing identity matching, not image captioning.resolution,draft,duration(auto or 4–30s),aspect_ratio(auto,16:9,9:16,1:1,21:9),generate_audio(on, free),bitrate_mode,codec,seed(-1for the model's choice; results can still vary slightly at a fixed seed).
Plus max_cost_usd, reuse_identical_run, extra_json, max_concurrent.
Outputs: video, video_path, seed, draft_id, info.
The pricing quirk you should understand
With video references in play you're billed for both the input and the output video, at a 0.6 multiplier - fal's own example is roughly $0.2838 per second at 720p when a video input is present. So a 10-second reference video that produces a 10-second output is twenty seconds of billing, discounted. Audio and image references don't add like that, but they do count as inputs to the shot.
In practice: build the character from images and use video references only when the motion itself is the thing being transferred. That's cheaper and usually gives you cleaner identity.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, or let ComfyUI Manager install it - search arkennemasis. Then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env beside run_nvidia_gpu.bat, or in the ComfyUI folder. There is no key widget on the node, on purpose: workflow JSON stores widget values verbatim, so a typed key travels with every file you share.
Where people get burned
Thirty images and ten videos is an easy way to spend upload time and money on references the model dilutes rather than uses. Curate: three or four clean angles of the character beat twenty random frames. The mixed-modality ceiling (50 files) is a hard wall, not a suggestion.
And the task switch. If you're planning to edit a reference video, know that it wants to control duration and aspect ratio itself - you're not keeping a timeline here.
Everything else is the pack's standard fal machinery: results to output/fal/bytedance_seedance-2.5_reference-to-video/, a request log in output/fal/_requests.jsonl, automatic backoff on rate limits, Cancel that reaches fal, and free recovery of an interrupted job by request id.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt used to generate the video. Empty leaves it out. | |
| task | COMBO | reference | The type of video generation task. Reference uses the supplied media as guidance. Editing modifies a reference video and automatically coerces aspect_ratio and duration to auto. Extension continues a reference video and automatically coerces aspect_ratio to auto. |
| resolution | COMBO | 720p | Video resolution - 480p for faster generation, 720p for balance, 1080p for high quality. |
| draft | BOOLEAN | false | Generate a draft preview at 480p, overriding resolution. Returns a draft_id for completing the draft at 1080p within seven days. |
| duration | COMBO | auto | Duration of the video in seconds. Supports 4 to 30 seconds, or auto to let the model decide based on the prompt. |
| aspect_ratio | COMBO | auto | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. |
| generate_audio | BOOLEAN | true | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated or not. |
| bitrate_mode | COMBO | standard | Output bitrate mode. 'high' requests a higher-quality, larger-file encode from the model; 'standard' uses the default bitrate. |
| codec | COMBO | auto | 'auto' retains default video codec behaviour; 'H264' uses H.264; 'H265' uses H.265. |
| seed | INT | -1-1–2147483647 | Random seed for reproducibility. Note that results may still vary slightly even with the same seed. -1 leaves it to the model. |
| image_1opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_2opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_3opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_4opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_5opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_6opt | IMAGE | Reference images to guide video generation. Refer to them in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image. Up to 30 images. Total files across all modalities must not exceed 50. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| video_1opt | VIDEO | Reference videos to guide video generation. Refer to them in the prompt as @Video1, @Video2, etc. Supported formats: MP4, MOV. Up to 10 videos. Each video must be 1.8 to 30.2 seconds and no larger than 200 MB; combined duration must not exceed 30.2 seconds. Dimensions must be 300 to 6,000 pixels per side, aspect ratio 0.4 to 2.5, and frame rate 24 to 60 FPS. Each socket may carry a batch; they are sent in socket orde | |
| video_2opt | VIDEO | Reference videos to guide video generation. Refer to them in the prompt as @Video1, @Video2, etc. Supported formats: MP4, MOV. Up to 10 videos. Each video must be 1.8 to 30.2 seconds and no larger than 200 MB; combined duration must not exceed 30.2 seconds. Dimensions must be 300 to 6,000 pixels per side, aspect ratio 0.4 to 2.5, and frame rate 24 to 60 FPS. Each socket may carry a batch; they are sent in socket orde | |
| video_3opt | VIDEO | Reference videos to guide video generation. Refer to them in the prompt as @Video1, @Video2, etc. Supported formats: MP4, MOV. Up to 10 videos. Each video must be 1.8 to 30.2 seconds and no larger than 200 MB; combined duration must not exceed 30.2 seconds. Dimensions must be 300 to 6,000 pixels per side, aspect ratio 0.4 to 2.5, and frame rate 24 to 60 FPS. Each socket may carry a batch; they are sent in socket orde | |
| audio_1opt | AUDIO | Reference audio to guide video generation. Refer to them in the prompt as @Audio1, @Audio2, etc. Supported formats: MP3, WAV. Up to 10 files. Each file must be 1.8 to 30.2 seconds and no larger than 15 MB; combined duration must not exceed 30.2 seconds. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| audio_2opt | AUDIO | Reference audio to guide video generation. Refer to them in the prompt as @Audio1, @Audio2, etc. Supported formats: MP3, WAV. Up to 10 files. Each file must be 1.8 to 30.2 seconds and no larger than 15 MB; combined duration must not exceed 30.2 seconds. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| audio_3opt | AUDIO | Reference audio to guide video generation. Refer to them in the prompt as @Audio1, @Audio2, etc. Supported formats: MP3, WAV. Up to 10 files. Each file must be 1.8 to 30.2 seconds and no larger than 15 MB; combined duration must not exceed 30.2 seconds. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| seed | INT | — |
| draft_id | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |