Create Video
Pack your frames (and audio) back into a video, no extension pack needed
- images
- audio
- VIDEO
CreateVideo is the pack-up side of the video pipeline: it takes an IMAGE batch, an optional AUDIO track, an fps, and a bit depth, and produces a VIDEO. If GetVideoComponents is the disassembly node, this is reassembly - the step that turns "a pile of frames my model just generated" back into something the newer video-aware nodes in ComfyUI will accept.
Why do you need it? Because the modern core video flow is: LoadVideo → trim/demux → run your model on the frames → CreateVideo → SaveVideo. Most generation nodes output frames, not files. CreateVideo is the bridge that lets you hand those frames to the VIDEO-type machinery - which is how you keep audio attached, control the bit depth, and eventually save without ever touching a third-party pack. It shipped with the built-in VIDEO type back in April 2025, so it's been core for a while and it's in the video category on any current install. Nothing to install.
How it works
Under the hood it builds a lazy video from components and sets the encoding parameters. The interesting constraint: it always writes H.264 in an MP4 container. The underlying save code literally raises if you ask for anything else - no WebM smuggling through CreateVideo. That's not a bug, it's the design: H.264 MP4 is the format every downstream video node and player agrees on. Audio (if you gave it any) goes in as AAC, truncated to the video's length, and the clip's duration is just frames / fps.
The inputs that matter
images- the frame batch. Required.fps- 1 to 120, default 30. This sets the clip's length and playback speed, so if your frames came out of a 24 fps source, keep the fps you got from GetVideoComponents or the clip plays back too fast.audio- optional. Attach a soundtrack (e.g. theaudiooutput of GetVideoComponents) and it gets muxed into the MP4 as AAC.bit_depth- 8 or 10, default 8. The author's own tooltip is the best summary: 10-bit keeps smoother gradients with less banding, but some players and downstream nodes may not support it.
Where people get burned
The 10-bit trap is the real one. It genuinely looks better - smoother skies, fewer color bands - but it's a compatibility landmine. Feed the resulting VIDEO into a node that assumes 8-bit, or open the file in an older player, and you get washed-out or broken output that has nothing to do with your generation. Only reach for 10-bit when you know the whole chain handles it. Second, the "not actually a file" confusion: CreateVideo produces a VIDEO handle, not a file on disk. Until it hits SaveVideo (or an equivalent output node), nothing is written - a graph that ends at CreateVideo has quietly produced nothing you can open. Third, audio mismatch: give it an audio track much longer than the clip and the track gets cut to the video length. That's usually exactly what you want, but it's worth knowing before you wonder where the last 20 seconds of your soundtrack went. Keep it simple: images + the right fps + SaveVideo on the other end, and you've got a clean MP4.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The images to create a video from. | |
| fps | FLOAT | 301–120 | — |
| audioopt | AUDIO | The audio to add to the video. | |
| bit_depthopt | INT | 88–10 | Bit depth of the created video. 10-bit keeps smoother gradients with less banding, but some players and downstream nodes may not support it. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | — |