DARASK RIFE Interpolation
Turn 8fps stop-motion into smooth 25fps video
- images
- images
Low-fps generated video is jerky, and there are two ways to fix it: regenerate at higher FPS (expensive) or interpolate - synthesize the in-between frames from the ones you have. RIFE (Real-Time Intermediate Flow Estimation) is the standard tool for that, and this node wraps it for ComfyUI. Give it a frame sequence at 8 or 16 FPS, tell it the source and target rates, and it returns a sequence with the missing frames filled in. It's the frame-smoothening half of the pack's MMAudio recipe, and it works standalone on anything that produces an IMAGE batch.
How it works
RIFE estimates optical flow between pairs of frames and synthesizes the frames that would sit between them, iterating until the source rate reaches the target. The inputs are:
images- your[N, H, W, 3]frame batch (from DARASK Load Video (Upload) or any loader).source_fps(default 16) andtarget_fps(default 25) - the math driver.scale(default 1.0) - internal processing scale; 0.5 roughly doubles speed at a modest quality cost.model_name- which RIFE model file to use, defaultflownet.pkl.batch_size(default 8) - frame pairs processed in parallel. Higher is faster, costs VRAM.use_fp16(default on) - FP16 inference on CUDA, faster and lighter.
Output: images, the interpolated batch - roughly loaded_duration × target_fps frames.
The model file you have to fetch yourself
This is the one DARASK node that doesn't work out of the box. You need the RIFE weights: download RIFEv4.26_0921.zip from hzwer/RIFE on Hugging Face, extract flownet.pkl, and drop it in one of these spots (first found wins):
1. a "rife" folder you configured in extra_model_paths.yaml
2. <ComfyUI>/models/rife/flownet.pkl ← the recommended one
3. this package's rife_internal/train_log/flownet.pkl
The node's internal RIFE architecture is the MIT-licensed original from hzwer's ECCV2022-RIFE work; only the ComfyUI wrapper is the pack author's own code.
Install and using it
Pack install: Manager → search DARASK → install, restart. It's OpenCV/CUDA-based; the pack pulls what it needs.
The README's recipe: Load Video (Upload) → RIFE Interpolation (16→25) → MMAudioSampler, with loaded_duration from DARASK Video Info feeding the audio duration so sound lines up with the new frame count. Two cautions: keep source_fps consistent with what the loader actually produced after filtering (use Video Info's loaded_fps if you used select_every_nth), and don't set target_fps wildly high - 16→60 is roughly a 4x frame count, and the memory and time blow up accordingly.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| source_fps | FLOAT | 16.01–240 | Source clip's frame rate. |
| target_fps | FLOAT | 25.01–480 | Desired frame rate after interpolation. |
| scale | FLOAT | 1.000.25–4 | Internal processing scale. <1 is faster but lower quality. |
| model_nameopt | STRING | flownet.pkl | — |
| batch_sizeopt | INT | 81–64 | Frame-pairs processed in parallel — higher = faster, more VRAM. |
| use_fp16opt | BOOLEAN | true | Use FP16 on CUDA for faster inference / lower VRAM. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |