Nodes/Deno Custom Nodes/(Deno) Video Preview
ComfyUI Node

(Deno) Video Preview

A preview that shows what you'll actually get — before you commit to the encode

By Deno2026·Created 5 months ago·Updated a day ago· 157
(Deno) Video Preview
  • images
  • audio
  • images
frame_rate25

Most "video preview" nodes in ComfyUI are lies - they decode a latent and show you a rough image stream, which is not the video you're going to get. (Deno) Video Preview is the honest version: it actually encodes a real H.264 file at full resolution and plays that back in the node. And because it passes the input frames straight through unchanged, you can drop it inline at multiple sampling points without forking your wire. That's the whole trick, and it's a genuinely useful one.

Why it earns its place

Say you're iterating on a video workflow and want to eyeball the output after the first sampler stage, then again after the upscaler, without branching the graph into parallel preview paths. With this node you just chain it inline - images in, images out, preview in the middle. The encode is done in-process with PyAV (no external ffmpeg process spawned), written to one stable temp file per node that gets overwritten every run, so hammering a generation fifty times doesn't pile up temp storage. It's the same reasoning that makes VHS's preview nice, but with a clean pass-through contract.

There's a quiet reason this matters more now: LTX 2.3 rebuilt its VAE and broke the TinyVAE preview trick, so on current LTX workflows you're effectively generating blind until decode. A real encoded preview is the workaround, and this node is a much cheaper one than a full save-and-check loop.

Inputs and outputs

  • images (IMAGE) - the frame batch to preview.
  • frame_rate (INT, default 25) - playback rate for the preview.
  • audio (AUDIO, optional) - muxed into the preview as AAC. The node is tolerant of dict/object, (waveform, sr) tuples, and [C,N] / [N,C] shapes; if audio can't be used it logs that and still previews video.
  • images (IMAGE) out - your frames, untouched, ready for the next node.

The player itself is clean: auto-looping, click to play/pause, hover to hear the audio, a Full screen button, and a compact badge showing resolution, FPS, frame count, and duration. The wheel passes through to the ComfyUI canvas so zooming still works over the node.

Install and gotchas

The pack clones normally:

cd ComfyUI/custom_nodes
git clone https://github.com/Deno2026/comfyui-deno-custom-nodes.git
# restart ComfyUI

The one real dependency is PyAV, and it is not in the pack's requirements.txt - the author deliberately left it out and made the node fail gracefully instead. If it's missing you'll see a one-line install hint rather than a graph-breaking traceback:

pip install av
# then restart ComfyUI

That's the setup. After that the only thing that ever surprises people is the audio tolerance: if you're feeding a weird audio shape from a node that doesn't produce standard AUDIO, the preview still works, it just drops the sound. Which, for a preview node, is the right failure mode.

CategoryDeno/Image

Inputs (3)

NameTypeDefaultDescription
imagesIMAGEImage frame batch to preview as a video.
frame_rateINT251–120Playback frame rate for the preview video.
audiooptAUDIOOptional audio attached to the temporary preview video.

Outputs (1)

NameTypeDescription
imagesIMAGEUnchanged input frames passed through after preview creation.