Nodes/ComfyUI-CoachBate/CoachBate Upscale and Frame Interpolator TensorRT
ComfyUI Node

CoachBate Upscale and Frame Interpolator TensorRT

The 'RIFE' node that quietly dropped RIFE for FILM

By CoachBate·Created 2 months ago·Updated about 21 hours ago· 0
CoachBate Upscale and Frame Interpolator TensorRT
  • images
  • audio
  • interpolation_states
  • filenames
  • output_fps
upscale_model
upscale_precision
resize_to
resize_width3840
resize_height2160
rife_model
rife_precision
rife_resolution_profilesmall
rife_custom_min_dimension384
rife_custom_opt_dimension720
rife_custom_max_dimension1312
rife_multiplier2
rife_batch_size1
clear_cache_after_n_frames100
keep_rife_model_loadedfalse
source_fps24.00
playback_modepreserve duration
codec
pixel_format
crf16
filename_prefixCoachBate_TensorRT
save_outputtrue
save_metadatatrue
pingpongfalse
trim_to_audiofalse
interpolation_modelNo FILM model found
multiplier_list

This is the node you wire at the end of a video workflow when "save it bigger and smoother" needs to be one step, not three. Feed it your decoded frames plus an AUDIO stream, and it TensorRT-upscales every frame, interpolates up to a higher frame rate with Google's FILM, muxes the audio, and writes a finished H.264/H.265 MP4. The kicker: it never holds the whole video in VRAM or RAM at once, so a long 720p→4K job won't quietly kill your machine on the last chunk.

It comes out of CoachBate/ComfyUI-CoachBate, an alpha-stage quality-of-life pack built for CoachBate's own shot-by-shot LTX-2.3 production. "For my own production" is doing real work here: it collapsed his upscale → interpolate → Video Combine chain into one button. It's opinionated, it's young, and it assumes you already have the TensorRT machinery running.

The name is a lie (mostly)

Class name says Rife. The README, the node title, and the code all say FILM. What happened: this node started life driving yuvraj108c's RIFE-TensorRT interpolation, and somewhere along the way CoachBate swapped it for ComfyUI's native frame-interpolation nodes - FrameInterpolate from comfy_extras.nodes_frame_interpolation, using film_net checkpoints. The old RIFE controls are still in the schema for backward compatibility with saved workflows, but the code deletes them on execution and never loads a RIFE nodepack. No RIFE pack required. If you see stale rife_* widgets you can't find on the node face - that's why; they're serialized but hidden.

So the real pipeline is: upscale each frame chunk with UpscalerTensorrt (from ComfyUI-Upscaler-Tensorrt), then interpolate between adjacent upscaled frames with FILM, then stream each completed frame straight to FFmpeg. Only two upscaled frames plus their generated middle frames exist in memory at a time. The node auto-sizes passes from your actual RAM - it reserves at least 8 GiB for the system, runs the whole video in one pass when it safely can, and overlaps passes by a frame so every source pair gets interpolated exactly once.

The inputs that actually matter

  • images and audio are both required. Audio is the one that trips people up - wire in a Load Audio or whatever AUDIO your pipeline produced, or the node won't run. It replaces a separate Video Combine step, so delete that if you had one downstream.
  • upscale_model - whatever TensorRT upscale engine you have, e.g. 4x_foolhardy_Remacri_ExtraSmoother. It's downloaded/built lazily on first execution, which is why your first run takes forever and later ones don't.
  • rife_multiplier (default 2) - despite the name, this is your FILM multiplier: output intervals per source interval. Set it to 1 to skip interpolation entirely and just get upscaled frames at source FPS. Bonus: at 1, the FILM checkpoint isn't even loaded.
  • resize_to - none / FHD / 2k / 4k, or custom to reveal resize_width / resize_height.
  • source_fps, playback_mode - preserve duration raises the output FPS to match the extra frames; slow motion keeps source FPS and just stretches playback.
  • codec, pixel_format, crf - H.265 is the default; 10-bit yuv420p10le is the default pixel format (8-bit yuv420p is the broadly-compatible choice); CRF 16, lower = better quality and bigger file.

Outputs are filenames (a VHS_FILENAMES value pointing at the saved MP4 - feed it to a preview or file node) and output_fps (the exact FPS FFmpeg used, handy when anything downstream needs the real duration).

Installing it

Through ComfyUI Manager, search "CoachBate", or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/CoachBate/ComfyUI-CoachBate.git

Then restart ComfyUI; the node lives under CoachBate → video in Add Node. The real dependencies:

  • ComfyUI-Upscaler-Tensorrt - required, not bundled.
  • ComfyUI-VideoHelperSuite (VHS) - also required; the node flat-out errors without it ("requires ComfyUI-VideoHelperSuite"). It does the FFmpeg encoding and muxing.
  • A FILM checkpoint in your frame_interpolation model folder - film_net_fp16.safetensors preferred, film_net_fp32.safetensors also works. Native frame-interpolation nodes ship with current ComfyUI, so no extra nodepack needed.
  • An NVIDIA RTX GPU with working TensorRT. Non-negotiable.

Where people get burned

The interpolation_model dropdown defaults to "No FILM model found" - that's literal. Run with a multiplier above 1 and no FILM checkpoint on disk and the node raises a clear error telling you to put one in frame_interpolation. Drop the .safetensors in (ComfyUI Manager's model installer can fetch it), restart, and the dropdown populates.

First-run slowness is expected, not a hang: TensorRT engine build happens lazily at execution, and RIFE/TensorRT tooling is famously "a bit tricky to get up and running" before it becomes blazing fast. The author tuned this for a 32 GB RTX 5090 - on smaller cards, long 4K jobs can still strain VRAM even with chunking, and pingpong mode writes a temporary cache to your system temp drive, which needs free space plus a safety reserve. If the source already runs at a frame rate you like, leave rife_multiplier at 1 and treat this as a pure streaming TensorRT upscaler.

CategoryCoachBate/video

Inputs (30)

NameTypeDefaultDescription
imagesIMAGE
audioAUDIO
upscale_modelCOMBO1 options: 4x_foolhardy_Remacri_ExtraSmoother
upscale_precisionCOMBO2 options: fp16, fp32
resize_toCOMBO4 options: none, FHD, 2k, 4k
resize_widthINT38401–8192
resize_heightINT21601–8192
rife_modelCOMBO1 options: rife49_ensemble_True_scale_1_sim
rife_precisionCOMBO2 options: fp16, fp32
rife_resolution_profileCOMBOsmall3 options: small, medium, large
rife_custom_min_dimensionINT38464–4096
rife_custom_opt_dimensionINT72064–4096
rife_custom_max_dimensionINT131264–4096
rife_multiplierINT21–16FILM intervals per source interval. Set to 1 to bypass FILM and preserve source FPS.
rife_batch_sizeINT11–16
clear_cache_after_n_framesINT1001–1000
keep_rife_model_loadedBOOLEANfalseCompatibility setting; streaming manages engine lifetime automatically.
source_fpsFLOAT24.000.01–240
playback_modeCOMBOpreserve duration2 options: preserve duration, slow motion
codecCOMBO2 options: H.265 / HEVC, H.264 / AVC
pixel_formatCOMBO2 options: yuv420p10le, yuv420p
crfINT160–51
filename_prefixSTRINGCoachBate_TensorRT
save_outputBOOLEANtrue
save_metadataBOOLEANtrue
pingpongBOOLEANfalse
trim_to_audioBOOLEANfalse
interpolation_modelCOMBONo FILM model found1 options: No FILM model found
multiplier_listoptSTRING
interpolation_statesoptINTERPOLATION_STATES

Outputs (2)

NameTypeDescription
filenamesVHS_FILENAMES
output_fpsFLOAT