Nodes/Framerate Converter/Build FFmpeg Command
ComfyUI Node

Build FFmpeg Command

Build FFmpeg Command — see the exact command before it ever runs

By LaserDog80·Created 4 months ago·Updated 4 months ago· 0
Build FFmpeg Command
  • conversion_params
  • audio_params
  • ffmpeg_command
  • command_list
video_path
output_path
video_codeclibx264
crf18
presetmedium
audio_codecaac
audio_bitrate192k
minterpolate_qualityhigh

Here's the thing about FFmpeg: it's insanely powerful and utterly unforgiving, and most people learn it by pasting commands they don't fully understand from forum posts. Build FFmpeg Command is the node in the Framerate Converter pack (Trope Tools, TropeMedia) that assembles the actual conversion command for you - and shows it to you - without making you write a single flag by hand.

It's the "Configure" stage of the pipeline: it takes the conversion parameters from Calc Conversion, the audio parameters from Calc Audio, the input and output paths, and your codec/quality choices, then produces a complete FFmpeg invocation. It does the string-building but never executes anything - running it is Run FFmpeg's job.

The inputs

Required: video_path, output_path, and conversion_params (the CONV_PARAMS from Calc Conversion). Optional:

  • video_codec (default libx264), crf (default 18), preset (default medium) - your quality controls, the same crf dial as the flagship node.
  • audio_codec (default aac) and audio_bitrate (default 192k).
  • audio_params - the AUDIO_PARAMS from Calc Audio. If you leave it disconnected it falls back to a plain atempo at the target/source ratio.
  • minterpolate_quality - only relevant for the minterpolate method: fast, medium, high (default), or best, which map to different mi_mode/mc_mode/vsbmc settings.

The outputs

Two views of the same command:

  • ffmpeg_command - a single readable string. Display it in a Show Text node and you can read exactly what will run: ffmpeg -y -i in.mp4 -filter_complex "[0:v]setpts=0.96*PTS[v];[0:a]atempo=1.04167[a]" ...
  • command_list - the same command as a structured CMD_LIST list, which is what Run FFmpeg actually consumes. Executing a list of arguments instead of a shell string means no quoting bugs when your path has spaces or weird characters - a real, common failure mode with hand-rolled FFmpeg in custom nodes.

Depending on the method it builds different filters: setpts speed-change for speed_change, the fps= filter for frame_drop, framerate= for frame_blend, and a full minterpolate chain for the interpolation method. The output is genuinely educational - want to learn what a 24→25 speed change does under the hood? Build one of these and read the command.

Install

Manager → Trope Tools - Framerate Converter, or git clone https://github.com/LaserDog80/ComfyUI-FramerateConverter into custom_nodes/ and restart. No pip dependencies - it's pure string building.

Where people get value from this one: debugging a conversion that "looks wrong" by reading the actual filter chain, tweaking crf/preset/minterpolate_quality for a custom encode, or just learning FFmpeg by osmosis. If you never want to see a command line, the composite Convert Framerate node hides all of this - which is also fine.

CategoryTrope Tools/Framerate Converter/Configure

Inputs (10)

NameTypeDefaultDescription
video_pathSTRING
output_pathSTRING
conversion_paramsCONV_PARAMS
audio_paramsoptAUDIO_PARAMS
video_codecoptSTRINGlibx264
crfoptINT180–51
presetoptSTRINGmedium
audio_codecoptSTRINGaac
audio_bitrateoptSTRING192k
minterpolate_qualityoptCOMBOhigh4 options: fast, medium, high, best

Outputs (2)

NameTypeDescription
ffmpeg_commandSTRING
command_listCMD_LIST