Nodes/IAMCCS-nodes/R45 Video Editor Exporter · Lazy
ComfyUI Node

R45 Video Editor Exporter · Lazy

ProRes out of ComfyUI, and the lazy trick that keeps the editor out of your way

By IAMCCS·Created about a year ago·Updated 3 days ago· 118
R45 Video Editor Exporter · Lazy
  • video
  • audio
  • cine_linx
  • video
  • output_path
  • report
  • rtx_frames
◄audio_source_modeaudio_input►
◄filename_prefixIAMCCS/Shotboarder_PRO►
◄video_profileprores_422_hq_mov►
◄audio_profilepcm_s16le►
◄audio_synctrim_to_video►
◄frame_rate_override24.00►
◄video_quality18►
◄embed_metadatatrue►
◄write_sidecartrue►
◄rtx_enabledfalse►
◄rtx_modeVSR Medium►
◄rtx_resize_typeKeep Ratio►
◄rtx_scale2.00►
◄rtx_megapixels2.00►
◄rtx_width1920►
◄rtx_height1080►
◄rtx_divisible_by8►
◄rtx_device0►
◄rtx_ratio_preset16:9►
◄rtx_resize_methodCenter Crop (Fill)►
◄master_audio_file►
◄metadata_json{}►
◄editor_audio_edl_json►

ComfyUI's native video save nodes will get an H.264 mp4 out the door, and for iteration that's all you need. For anything that goes into an edit - a Resolve timeline, a Premiere project, a colour pass - you want ProRes or DNxHR with PCM audio, and you want it without a second application in the middle.

R45 Video Editor Exporter · Lazy is that exporter. It's a small subclass of the pack's Shotboarder Exporter PRO with one meaningful difference, which I'll get to, and it's the node that turns a Comfy VIDEO into a real delivery file via ffmpeg.

Inputs you'll actually touch

Required: video (a Comfy VIDEO), filename_prefix (default IAMCCS/Shotboarder_PRO), and a pile of profile widgets.

video_profile has eight options, and they're not decorative - each one sets a real codec and pixel format:

  • h264_mp4, h265_mp4 - delivery/streaming; H.265 goes 10-bit (yuv420p10le)
  • prores_422_mov, prores_422_hq_mov, prores_4444_mov - the edit-friendly ones
  • dnxhr_hqx_mov - the Avid side of the same argument
  • v210_mov, ffv1_mkv - uncompressed-ish and lossless archival

audio_profile is eight more: copy_source, aac_320, aac_192, pcm_s16le, pcm_s24le, pcm_s32le, flac, alac. Default is pcm_s16le, which is the sane match for ProRes.

Then the operational ones: audio_sync (trim_to_video or shortest), frame_rate_override (24 by default - set it to match your plan rather than trusting it), video_quality (CRF, default 18), embed_metadata, write_sidecar, and a whole rtx_* cluster for NVIDIA's video super resolution.

Optional: audio, cine_linx, master_audio_file (pull audio from a file instead), metadata_json, and editor_audio_edl_json - the compact trim handoff from the Video Editor.

Outputs: video (the Comfy VIDEO object, for chaining), output_path (STRING - this is what the R45 editor gate consumes), report (STRING), and rtx_frames (IMAGE, the exact frame sequence after any RTX processing).

How it works

It pipes raw frames into an ffmpeg subprocess with a per-profile argument list, and it looks for ffmpeg on PATH first, falling back to imageio_ffmpeg's bundled binary if it isn't there. If neither exists you get an error in Italian, which is either charming or unhelpful depending on how your day is going.

There's one automatic correction worth knowing: if you pick a PCM or FLAC audio profile with an MP4 container, the exporter swaps to aac_320 and tells you in the report. MP4 genuinely can't carry those reliably across ffmpeg builds, so the alternative is a broken file or a dead node.

Metadata and sidecars default to on. A sidecar next to the master is what the resume/delivery nodes look for later, so leave write_sidecar alone unless you have a reason.

The RTX cluster (rtx_enabled plus scale, megapixels, target dimensions, ratio preset, resize method, device) uses NVIDIA's nvvfx VideoSuperRes. It's real-time hardware upscaling, and the community read on RTX VSR is that it's kinder to already-clean sources than generative upscalers - it enhances rather than invents. It's off by default, and if nvvfx isn't installed the RTX path fails, so don't enable it on a machine you haven't tested.

The "Lazy" part

The original Shotboarder Exporter PRO is a terminal output node: it always runs when it's in a graph. This subclass sets OUTPUT_NODE = False, making it non-terminal. It only executes when something downstream actually requests output_path - in practice, IAMCCS_MiniMaxH3EditorOptionalFinalR45. When the editor is off, this node and everything feeding it simply don't run. No encode, no ffmpeg, no thirteen-minute wait for a file you'll delete.

That's the entire reason the subclass exists. The author's comment in the source says exactly this, and mentions the goal of not regressing older workflows that expect the terminal behaviour.

Which gives you the gotcha: if you put this node at the end of a graph by itself, nothing happens. No output node, no execution. It needs the gate (or another output node) after it.

Install

Part of the IAMCCS pack:

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

Restart and hard-refresh. ComfyUI Manager → IAMCCS Nodes works too. One copy only.

Then check your ffmpeg, because this node is genuinely dependent on it:

ffmpeg -version

No requirements.txt in the repo, so no pip step for the pack - but imageio_ffmpeg is the pleasant fallback if system ffmpeg is missing, and NVIDIA's nvvfx is a separate install you only need for rtx_enabled. ComfyUI 3.0.0+.

Common issues

"FFmpeg export failed" with a wall of stderr. The node truncates to the last ~4000 characters of ffmpeg's error output; almost every case is a pix_fmt/container mismatch - like asking for ProRes 4444 in an mp4. Match profile to container.

Audio drifts or is cut short. audio_source_mode decides whether it takes audio or master_file_direct. If you're pulling a master file, check audio_sync: trim_to_video cuts audio to picture length, shortest cuts both to whichever ends first. They're not the same behaviour and the wrong one looks like drift.

Nothing exported. Check whether an output node is downstream. Non-terminal is a feature with a sharp edge.

ProRes files enormous and the queue times doubled. That's ProRes. 422 HQ at 1080p is roughly 220 Mbit/s. Use h264_mp4 for review passes and save the intermediates for the final.

Where it fits

Editor branch → IAMCCS_ShotboardVideoEditorRenderOptionalR49 → this → R45 Final Master / Optional Editor Gate. The direct path, meanwhile, comes out of the normal delivery chain. Both land at the same gate, which is the whole point of the design.

CategoryIAMCCS/Cine/Export

Inputs (26)

NameTypeDefaultDescription
videoVIDEO—
audio_source_modeCOMBOaudio_input2 options: audio_input, master_file_direct
filename_prefixSTRINGIAMCCS/Shotboarder_PRO—
video_profileCOMBOprores_422_hq_mov8 options: h264_mp4, h265_mp4, prores_422_mov, prores_422_hq_mov, prores_4444_mov, dnxhr_hqx_mov, +2
audio_profileCOMBOpcm_s16le8 options: copy_source, aac_320, aac_192, pcm_s16le, pcm_s24le, pcm_s32le, +2
audio_syncCOMBOtrim_to_video2 options: trim_to_video, shortest
frame_rate_overrideFLOAT24.000–240—
video_qualityINT180–51—
embed_metadataBOOLEANtrue—
write_sidecarBOOLEANtrue—
rtx_enabledBOOLEANfalse—
rtx_modeSTRINGVSR Medium—
rtx_resize_typeSTRINGKeep Ratio—
rtx_scaleFLOAT2.001–4—
rtx_megapixelsFLOAT2.000.01–64—
rtx_widthINT192064–8192—
rtx_heightINT108064–8192—
rtx_divisible_bySTRING8—
rtx_deviceINT00–16—
rtx_ratio_presetSTRING16:9—
rtx_resize_methodSTRINGCenter Crop (Fill)—
audiooptAUDIO—
cine_linxoptIAMCCS_SUPERNODE_LINX—
master_audio_fileoptSTRING—
metadata_jsonoptSTRING{}—
editor_audio_edl_jsonoptSTRING—

Outputs (4)

NameTypeDescription
videoVIDEO—
output_pathSTRING—
reportSTRING—
rtx_framesIMAGE—