Nodes/ComfyTV/Deinterlace
ComfyUI Node

Deinterlace

Rescue interlaced footage without installing an entire video stack

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Deinterlace
  • video
  • video
force_run_token0
project_id
parent_output_id0
methodbwdif
rateframe

If you've ever dumped an old camcorder tape, ripped a DVD, or grabbed a TV broadcast and seen horizontal comb lines whenever anything moves, you're looking at interlaced video. Each frame only holds half the scanlines, and the two halves were captured at different moments. This node is the fix: one stage that deinterlaces the clip properly instead of making you bolt a video toolchain onto your ComfyUI.

It's a ComfyTV VideoFX stage, which means it lives in the pack's canvas model - own Run button, snapshot output, and (the good part) it participates in the FX chain, so it renders in a single pass alongside whatever else you stack on the clip.

The inputs

  • method - bwdif (default), yadif, estdif, or w3fdif. These are real, name-brand deinterlacers - bwdif is the modern motion-adaptive default and it's the right starting point. w3fdif is the heavyweight high-quality option and is also the only one that always doubles the output rate.
  • rate - frame (default) or field. frame keeps the output at the source framerate; field produces one output frame per input field, which doubles the frame rate. The tooltip spells it out: field "doubles the output frame rate." Choose field when you want the smoother motion and your downstream pipeline can handle 50/60 fps.

The project_id, parent_output_id, and force_run_token inputs are internal frontend plumbing - leave them be.

How it works

Each method maps to its FFmpeg namesake (bwdif, yadif, estdif, w3fdif). The node sets the filter's mode from your rate choice - send_frame vs send_field for bwdif/yadif, frame vs field for estdif - and stamps the expected output framerate on the FX spec so downstream stages know they're getting a 2× clip if you asked for one. If the result is meant to be watched, use frame; if it's meant to be slowed down or re-timed later, the extra frames from field give you headroom.

Install

ComfyTV ships ~190 stages in one pack, so this node arrives with the pack:

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

Restart ComfyUI fully - the README is explicit that a browser refresh is not enough - and look under ComfyTV → VideoFX. ComfyUI Manager finds it by searching "ComfyTV". No model downloads and no extra Python dependencies; deinterlacing is pure filter math. If you're on ComfyUI Desktop or macOS, clone into the running instance's absolute path (find it in the startup log) rather than trusting cd ComfyUI/custom_nodes.

Troubleshooting

  • Combing is gone but playback stutters. If you chose field, you doubled the framerate - your export or player may be capping at the old rate. Re-export at the new fps, or use frame if you don't need the extra motion.
  • Fine details shimmer after deinterlace. Switch method from bwdif to w3fdif on tricky footage; it's slower but better at motion-adaptive reconstruction.
  • No output. Wire a video into the video input; the stage errors cleanly otherwise.

It's a narrow job, but if you've ever been handed DV-era footage you know exactly why this node earns its place in the suite.

CategoryComfyTV/VideoFX

Inputs (6)

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.
methodCOMBObwdif4 options: bwdif, yadif, estdif, w3fdif
rateCOMBOframefield doubles the output frame rate
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO