Deinterlace
Rescue interlaced footage without installing an entire video stack
- video
- video
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, orw3fdif. 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) orfield.framekeeps the output at the source framerate;fieldproduces one output frame per input field, which doubles the frame rate. The tooltip spells it out: field "doubles the output frame rate." Choosefieldwhen 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 useframeif you don't need the extra motion. - Fine details shimmer after deinterlace. Switch method from bwdif to
w3fdifon tricky footage; it's slower but better at motion-adaptive reconstruction. - No output. Wire a video into the
videoinput; 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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| method | COMBO | bwdif | 4 options: bwdif, yadif, estdif, w3fdif |
| rate | COMBO | frame | field doubles the output frame rate |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |