Image To Video
Turn one image into a still video — and don't pay for it
- image
- video
ImageToVideo takes a single image and repeats it for a specified number of frames, producing a still video. Yes, a video of a static image. It sounds pointless until you realize this is the standard trick for building the background layer of a composite.
The implementation detail that makes it cheap: it uses expand() on the image tensor, which is a zero-copy operation. All N frames are views over the same underlying image data, so a "10,000-frame video" costs no more memory than the single image. That's the same lazy philosophy the rest of ComfyUI-Video-Edit runs on - nothing materialized until something actually needs the pixels.
What you set
Three inputs, one output:
image(IMAGE) - any single image: an empty/black canvas, a generated background, whatever.frame_count(INT) - how many frames to repeat, default 30.frame_rate(INT) - frames per second of the output video, default 30, the author's tooltip calls it exactly that. Only matters at save time.- Output:
video(VIDEO) - ready to feed the layer system or a save node.
The actual use case
You're assembling a multi-layer composite (see VideoCompositeLayer and VideoComposite in this same pack). The canvas for VideoComposite is an IMAGE, not a VIDEO - but everything you composite on top of it is a video. So to get a background that lives the same length as your other layers, you turn your canvas image into a still video with ImageToVideo and composite it like any other layer. It's also the lazy person's way to put a static title card or a freeze frame into an edit without dragging around a heavyweight video node.
Gotchas
- It's a still. No motion, no interpolation, no magic. If you expected it to animate, you grabbed the wrong node - this is the "hold this frame" node.
- Match your frame rate. If your foreground layers run at 24fps and this still is 30fps, you'll get inconsistent timing when you composite. Set
frame_rateto whatever the rest of the project uses. - Length matters for compositing.
VideoCompositederives the output length from the first layer it sees. If your still background is 30 frames and your foreground clip is 120, the composite only runs as long as the first layer - keep layer lengths aligned or you'll wonder where your footage went.
Install
cd ComfyUI/custom_nodes/
git clone https://github.com/guchendesigndog/comfyui-video-edit.git
pip install -r comfyui-video-edit/requirements.txt
Or search "ComfyUI-Video-Edit" in ComfyUI Manager and restart. Only real dependency: PyAV (av>=10.0.0), which needs FFmpeg. Small MIT-licensed pack by a solo author, and this node is one of the simpler members - genuinely useful the moment you start stacking layers, and practically free on memory.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| frame_count | INT | 301–99999 | — |
| frame_rate | INT | 301–120 | Frames per second of the output video |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |