Nodes/Preview Video Monitor Pro/🖥️ Preview Video Monitor Pro
ComfyUI Node

🖥️ Preview Video Monitor Pro

Finally, a real video player for your second monitor

By CrateTools·Created 11 months ago·Updated 4 days ago· 19
🖥️ Preview Video Monitor Pro
  • images
  • video
  • video
sourcevideo
monitorMonitor 0 (unknown resolution)
power_statetrue
target_resolution1920x1080
generations_nameGeneration
snapshot_workflowtrue
snapshot_pathsmart

You know the drill: you generate a video in ComfyUI, and the "preview" is a thumbnail in a browser tab you have to switch away from, or the VHS player fighting for screen space with your graph. PreviewVideoMonitorPro says no - it opens your generation in a real, fullscreen, frame-accurate video player on a second physical monitor, complete with a timeline, playback controls, zoom, and enough forensic tools to actually see what the model produced. It won't make your videos better, but it'll change how painful it is to review them.

It's a niche tool, and it's new - from CrateTools (Nicolas Landajo, who posted it to r/comfyui in late 2025), with basically no community lore around it yet. What you're getting is one developer's opinionated take on the missing preview experience, and it's genuinely good at that one job.

How it works

Drop it at the end of a pipeline and it spawns a separate pygame window on the physical monitor you pick. Under the hood it decodes frames with OpenCV (cv2.VideoCapture), caches them to disk in runs_cache/, and renders with pygame, using screeninfo to enumerate your displays. A worker thread decodes and caches while the main loop draws, so scrubbing is near-instant on cached frames. It also tries GPU acceleration (OpenCV CUDA or PyTorch CUDA) with a CPU fallback - the GPU path is a wash at 1080p (PCIe overhead eats the gain); it matters at 6K/8K, where the author measured 50–70% faster resizing.

The player itself is where the effort went. Space plays/pauses, arrows step frames, I/O set IN/OUT points that every playback mode respects, 15 cycle fit modes, mouse wheel zooms anchored to the cursor. There's a Generations vault that survives restarts - every run gets cached so you can jump back to an earlier iteration and compare. Snapshots save whatever's on screen as a webp with your workflow JSON embedded, so you can reopen it in ComfyUI later and pick up where you left off - a workflow-save feature most preview tools lack.

The inputs that matter

Most of these you set once and forget:

  • source - video or images, matching what you feed it. Video goes to the video input, an image sequence or single image (or a batch of tensors) to images.
  • monitor - which physical screen gets the window. Turning power_state off is how you safely switch to a different monitor, then back on.
  • target_resolution - internal processing res, 1920x1080 or 3840x2160. Match it to your monitor's native res.
  • generations_name - the label prefix for the Generations vault and its cache filenames. Handy for long iteration sessions.
  • snapshot_workflow and snapshot_path - whether to embed the workflow in snapshots (yes, keep it on) and where they land: smart means the node's own snapshots/ folder, or a custom directory.

The output is a video that just passes your input through - the author says it exists for technical reasons and isn't recommended for chaining.

Installing it

ComfyUI Manager is the easy path - search "Preview Video Monitor Pro" and it installs with dependencies automatically (confirmed on both ComfyUI Desktop and Portable). Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/CrateTools/comfyui-preview-video-monitor
cd comfyui-preview-video-monitor
pip install pygame screeninfo opencv-python pillow

Restart ComfyUI and search for "PreviewVideoMonitorPro". No model files, no API keys, MIT licensed. One honest warning from the author: it's developed and tested on Windows 10 - Linux/macOS aren't verified.

Where people get burned

The big one, straight from the README: this is a volatile preview system, not a file manager. Cache and session data live inside custom_nodes/PreviewVideoMonitorPro/ (runs_cache, snapshots, runs_metadata.json) and can be cleared by you, updates, or accidents. Always pipe finals through Save Video / Save Image to your real working directory. Don't learn it the hard way.

Second: it's resource-hungry, and the author says so up front - the engine is early-stage, not peak efficiency. Their baseline is 12GB+ VRAM (an RTX 3060 is the stated minimum), 8 CPU cores, and 32GB RAM for video. If it eats your machine, that's not a misconfiguration; it's the tool.

If the monitor window never opens, check power_state is ON, confirm pygame and screeninfo actually installed, and glance at the ComfyUI console. If keyboard shortcuts seem dead, click inside the monitor window first - it needs focus (and shortcuts pause while you're typing). If playback feels heavy, close other apps eating RAM and trim cached generations.

If you're just doing the occasional image check, the built-in preview is fine. If you iterate on video seriously and have a spare screen, this is the node you'll keep reaching for - the wipe/SBS comparison and the vision tools (gain, gamma, saturation, RGB channel isolation, waveform, zebras, color picker) are the real reason to install it.

Categoryvideo/preview

Inputs (9)

NameTypeDefaultDescription
sourceCOMBOvideo2 options: video, images
monitorCOMBOMonitor 0 (unknown resolution)6 options: Monitor 0 (unknown resolution), Monitor 1 (unknown resolution), Monitor 2 (unknown resolution), Monitor 3 (unknown resolution), Monitor 4 (unknown resolution), Monitor 5 (unknown resolution)
power_stateBOOLEANtrue
target_resolutionCOMBO1920x10802 options: 1920x1080, 3840x2160
generations_nameSTRINGGeneration
snapshot_workflowBOOLEANtrue
snapshot_pathSTRINGsmart
imagesoptIMAGE
videooptVIDEO

Outputs (1)

NameTypeDescription
videoVIDEO