AD_FILM_VFI
Google's FILM interpolator, wired into an Apt_Preset batch
- frames
- IMAGE
If you've got a choppy image batch - a low-fps AnimateDiff render, a handful of keyframes, anything that needs more frames between the frames - this node runs Google Research's FILM model over it and hands back a smoother sequence. FILM stands for "Frame Interpolation for Large Motion," and that's the actual selling point over the more popular RIFE: it was built specifically to handle big jumps between frames without falling apart into ghosting or double-exposure artifacts. It's an older model (2022-era research, google-research/frame-interpolation) rather than the newest thing, but it's still a solid, well-understood choice, and Apt_Preset just wraps it as a normal ComfyUI node instead of making you fight the original repo's Colab-and-Docker setup.
How it works
You feed it a batch of frames, it runs FILM's neural interpolation between each consecutive pair, and generates new synthetic frames in between - not simple crossfades, but actual predicted motion, which is why it handles large displacement so much better than optical-flow or blend-based interpolation.
The inputs and outputs that matter
ckpt_name- which FILM checkpoint to load. The one you'll see isfilm_net_fp32.pt.frames(IMAGE) - your input batch. This is the thing getting interpolated.multiplier(default 2, minimum 2) - how many output frames you get per input frame.2doubles your frame count,4quadruples it, and so on.clear_cache_after_n_frames(default 10) - how often the node flushes its internal cache while chewing through a long batch. Lower this if you're tight on VRAM/RAM; it trades a little speed for staying alive on long sequences.
Output is a single IMAGE batch - your original frames plus everything FILM generated between them, ready to feed straight into a video-combine node or another VFI pass.
How to install it
Through ComfyUI Manager, search for "ComfyUI-Apt_Preset" and install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
Then, per the pack's own README, install dependencies: on Windows, double-click install.bat inside the cloned folder; on Linux/Mac, run pip install -r requirements.txt from inside it if install.bat isn't runnable for you. Restart ComfyUI afterward.
That gets you the node. It does not get you the model file. film_net_fp32.pt needs to exist somewhere ComfyUI can see it before the ckpt_name dropdown will show anything real instead of an empty list - check the console log on startup for the exact folder path Apt_Preset expects it in, since that's not documented in the pack's README. If you've already got the popular ComfyUI-Frame-Interpolation node pack (by Fannovel16) installed, it uses the identical filename for its own FILM checkpoint, so there's a decent chance the two packs can share one copy once you know the right folder.
Common issues & troubleshooting
Empty ckpt_name dropdown / node errors on load. Almost always means the FILM checkpoint isn't in the folder this node scans. Grab film_net_fp32.pt and place it where the console tells you it's looking, then restart ComfyUI - custom-node model dropdowns are populated at startup, not live.
Running out of memory on long batches. This is exactly what clear_cache_after_n_frames is for. If you're interpolating a long sequence at a high multiplier and things get slow or crash partway through, drop this number so the cache gets flushed more often.
Results look soft or ghosty on very fast motion. FILM is genuinely good at large-motion interpolation compared to older optical-flow methods, but "large motion" still has limits - if your source frames are wildly different (a full scene cut, not just movement), no interpolator is going to invent something sensible in between. That's a source-frames problem, not a settings problem.
It's slower than RIFE. That's the trade you're making. RIFE is faster and is what most people reach for by default; FILM is the pick when RIFE's motion estimation is falling apart on a specific large-motion shot and you want something built to handle exactly that case.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 1 options: film_net_fp32.pt | |
| frames | IMAGE | — | |
| clear_cache_after_n_frames | INT | 101–1000 | — |
| multiplier | INT | 22–1000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |