Nodes/ComfyTV/Ken Burns
ComfyUI Node

Ken Burns

Turn one still into a slow push-in video, no model required

By jtydhr88·Created 3 months ago·Updated about 17 hours ago· 725
Ken Burns
  • image
  • video
force_run_token0
project_id
parent_output_id0
width1280
height720
fps24
duration5.0
start_zoom1.00
end_zoom1.30
start_x0.50
start_y0.50
end_x0.50
end_y0.50
interpsmooth

Ken Burns is the oldest trick in the documentary book: take a still image, slowly zoom or pan across it, and the audience reads it as a shot instead of a photo. In ComfyTV this is its own stage, and it's one of the few video nodes in the pack that needs no model at all - no diffusion, no GPU inference, just a transform that renders faster than you can blink. It's the perfect last step before you start worrying about pacing: generate a great frame, then give it 5 seconds of life.

ComfyTV is the canvas-style app layer on ComfyUI where every operation is its own node and outputs flow downstream. Ken Burns sits in the Video category and is basically the "make a video from an image" stage for anything that isn't true motion.

How it works. You wire in one image, and the node renders a video by continuously resampling the frame from a start crop to an end crop. Start and end are each defined by a zoom level plus a normalized pan point (0–1, so 0.5/0.5 is center), and the interpolation between them follows the interp curve you pick. Straightforward math, which is exactly why it's instant and deterministic - same inputs, same video, every time.

The inputs that matter. The force_run_token, project_id and parent_output_id inputs are internal plumbing. The ones you actually set:

  • width / height / fps / duration - output spec. Defaults are 1280×720 at 24fps for 5 seconds, which is a solid starting point; raise fps if your export target needs it.
  • start_zoom / end_zoom - 1.0 to 6.0. 1.0 → 1.3 (the default) is a gentle push-in that reads as "alive" without shouting. Zooming out (1.3 → 1.0) gives the reveal feel.
  • start_x / start_y / end_x / end_y - the pan path, normalized 0–1. Diagonal drift from one corner to another is where Ken Burns starts looking cinematic.
  • interp - linear, smooth, ease_in or ease_out. smooth is the default and the right call for 99% of shots; linear feels mechanical on long moves.

The image input is required - the node will refuse to run with an error if you leave it empty. The single video output is what you feed a color stage, an FX chain, or straight into export.

Install. Install the pack once:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI (full backend restart, not a browser refresh) and the stage appears under ComfyTV → Video. ComfyUI Manager can do it - search "ComfyTV". Zero Python dependencies (the pack's pyproject.toml dependency list is empty), and since this node runs no model, there's nothing extra to download for it. If you're on Desktop or have several ComfyUI installs, clone into the running instance's absolute path from the startup log - the classic "clone succeeded but the node never shows up" story is a wrong-instance install.

Where people get burned. Forgetting to wire the image is the number one miss - the error message is clear, but it's also easy to hit Run on the node before you've connected an upstream frame. Beyond that: too-fast zooms. At 5 seconds a 1.0 → 1.3 move is calm, but a 1.0 → 6.0 punch on a busy image looks like a crash zoom. If you're generating the still, remember that an image destined for a push-in needs margin - a subject dead-center at the frame edge will get cropped out at end_zoom 1.3.

CategoryComfyTV/Video

Inputs (15)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
widthINT128016–4096
heightINT72016–4096
fpsINT241–120
durationFLOAT5.00.5–120
start_zoomFLOAT1.001–6
end_zoomFLOAT1.301–6
start_xFLOAT0.500–1
start_yFLOAT0.500–1
end_xFLOAT0.500–1
end_yFLOAT0.500–1
interpCOMBOsmooth4 options: linear, smooth, ease_in, ease_out
imageoptCOMFYTV_IMAGE

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO