arkennemasis fal · Seedance 2.5 US Image to Video · $0.26-1.40/s
First frame, last frame, and the model fills the gap
- image
- end_image
- video
- video_path
- seed
- draft_id
- info
This is the Seedance node you'll reach for when you already know what the shot looks like. Give it a still, describe the motion you want, and it animates up to thirty seconds of it with synchronized audio - footsteps, ambience, a line of dialogue if you asked for one. Every frame is generated, so nothing pops or warps the way a per-frame img2vid pass on a local model does.
The interesting extra is end_image. Supply both a starting and an ending frame and the model runs the whole clip as a transition between them - which turns "animate this photo" into "get me from here to there," a genuinely different and much more useful tool for shot planning.
How it works
The node is generated from fal's endpoint schema, which is why it looks exactly like the other Seedance nodes and nothing like a local sampler. On Run it reads FAL_KEY, validates the inputs and the picture, estimates the cost, uploads your images to fal's CDN (free), makes the one billed call, polls while showing status on the node, then downloads the result to output/fal/bytedance_seedance-2.5_us_image-to-video/. "US" is the point of the name: this is the region-hosted twin of the endpoint, and it's priced accordingly - roughly $0.26/s at 480p, $0.57/s at 720p, $1.40/s at 1080p, against the cheaper non-US text-to-video rate. You're paying for the routing.
The inputs that matter
Three of them, honestly:
image- the starting frame. JPEG, PNG or WebP, max 30 MB. It gets uploaded as you connected it; if you want 16:9 output, hand it a 16:9 still.prompt- motion and action, not scene description. "She turns to the window, curtain lifts, slow push in" beats a re-description of a photograph the model can already see. Empty is allowed.end_image- optional, and the reason to pick this node over its siblings. Set it and you've authored a transition.
Then resolution (480p / 720p / 1080p), duration (auto or 4–30), generate_audio (free either way per the node's tooltip - sound effects, ambience, lip-synced speech), plus bitrate_mode and codec for the encode. Note there's no aspect_ratio widget: the output follows your picture, so the framing decision happens upstream.
Outputs are video, video_path, seed, draft_id and info. One honest note: draft_id is in the output list because fal's response carries it, but this endpoint has no draft switch, so expect it empty. There's no cheap 480p preview trick here the way there is on the text-to-video node - plan your spend with resolution and duration and nothing else.
Install
Manager → search comfyui-arkennemasis, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart. Put FAL_KEY=your-key in the .env sitting next to run_nvidia_gpu.bat (or in the ComfyUI folder). No key field on the node, by design - a typed key would be saved into every workflow and every exported graph.
Common issues & troubleshooting
The $20 default cap trips. It applies to this node too, and a 30-second 1080p shot is about $42. The node stops before it uploads or sends anything, so you lose nothing but the click. Lower the duration, drop the resolution, or raise max_cost_usd.
A 30 MB image is rejected. Look at the file size before blaming the node - camera raws and big upscales blow past it. Downscale first; it's a starting frame, not a delivery master.
Same settings, instant result, no charge. That's reuse_identical_run doing exactly what it says: identical settings and the same picture, with the files still in output/fal, come back from disk. Turn it off for a fresh roll.
A clip where the motion stalls halfway. Not the node - a short, specific prompt plus an end_image that's visually far from the start frame asks the model to invent a lot. Move the frames closer together.
Cancelled mid-run and want to know what it cost. ComfyUI's Cancel also cancels on fal, and the ledger at output/fal/_requests.jsonl has the request id either way. If ComfyUI died instead of cancelling, the job kept running - collect it for free with fal Recover Result.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt describing the desired motion and action for the video. Empty leaves it out. | |
| image | IMAGE | The URL of the starting frame image to animate. Supported formats: JPEG, PNG, WebP. Max 30 MB. | |
| resolution | COMBO | 720p | Video resolution - 480p for faster generation, 720p for balance, 1080p for high quality. |
| 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. |
| 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. |
| end_imageopt | IMAGE | The URL of the image to use as the last frame of the video. When provided, the generated video will transition from the starting image to this ending image. Supported formats: JPEG, PNG, WebP. Max 30 MB. | |
| 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. |