Build FFmpeg Command
Build FFmpeg Command — see the exact command before it ever runs
- conversion_params
- audio_params
- ffmpeg_command
- command_list
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 (defaultmedium) - your quality controls, the same crf dial as the flagship node. - audio_codec (default
aac) and audio_bitrate (default192k). - audio_params - the
AUDIO_PARAMSfrom Calc Audio. If you leave it disconnected it falls back to a plainatempoat the target/source ratio. - minterpolate_quality - only relevant for the
minterpolatemethod:fast,medium,high(default), orbest, which map to differentmi_mode/mc_mode/vsbmcsettings.
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_LISTlist, 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.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | — | |
| output_path | STRING | — | |
| conversion_params | CONV_PARAMS | — | |
| audio_paramsopt | AUDIO_PARAMS | — | |
| video_codecopt | STRING | libx264 | — |
| crfopt | INT | 180–51 | — |
| presetopt | STRING | medium | — |
| audio_codecopt | STRING | aac | — |
| audio_bitrateopt | STRING | 192k | — |
| minterpolate_qualityopt | COMBO | high | 4 options: fast, medium, high, best |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| ffmpeg_command | STRING | — |
| command_list | CMD_LIST | — |