ComfyUI Node

Save Video X

A real h264/h265/AV1 encoder that drops into your Video Helper Suite chain

By haroonaslam·Created 4 months ago·Updated 7 days ago· 10
Save Video X
  • images
  • audio
  • vae
  • Filenames
frame_rate8
filename_prefixAnimateDiff
formatvideo/h264-mp4
crf_qualityStandard (CRF 23)
pixel_formatyuv420p (8-bit)
color_rangeAuto (format default)
save_metadata_preview_imagetrue
audio_bitrateSource/default
audio_filters[]
save_outputtrue

ComfyUI's built-in video output options are a WebP that browsers can play and not much else. When you actually want an MP4 you can send someone - real h264, h265, or AV1 - most people reach for Video Helper Suite and its ffmpeg backend. Save Video X is the WorkflowX take on that job, and it's deliberately compatible: it speaks the same VHS_FILENAMES output contract, so it drops straight into preview and upload chains built for VHS without rewiring anything.

What it is

An output node in WorkflowX/Video that takes an IMAGE batch, encodes each frame through ffmpeg, and writes a real video file. It sits at the end of any frame-producing pipeline: an AnimateDiff or Wan batch, an image-to-video model, or just a pile of frames you want turned into a clip. Whatever made the frames, this is the step that makes them a file.

How it works

The node shells out to ffmpeg with per-format encoder settings: libx264 for h264 MP4, libx265 for h265 MP4, libsvtav1 for AV1 WebM. It finds ffmpeg in a sensible order - a WORKFLOWX_FORCE_FFMPEG_PATH or VHS_FORCE_FFMPEG_PATH env var if you set one, then the ffmpeg binary bundled with imageio_ffmpeg (which most ComfyUI installs already have), then a system ffmpeg on PATH. The pack itself declares zero pip dependencies, so it leans on whatever ffmpeg is already lying around rather than forcing you to install anything.

The legacy defaults are a dead giveaway of where this node comes from: frame_rate defaults to 8 and filename_prefix to "AnimateDiff" - the Video Helper Suite / AnimateDiff convention, preserved so existing workflows keep working. Files save to your output folder with the usual counter (e.g. AnimateDiff_00001.mp4).

The inputs that matter

  • images - your frame batch. It also accepts latents if you connect the optional vae input (that's the "compatibility input" - feed the VAE when you're handing it latent tensors and it decodes for you).
  • format - video/h264-mp4, video/h265-mp4, or video/av1-webm. Pick h264 for maximum compatibility, AV1 for the best size at good quality (note its pixel format defaults to 10-bit).
  • frame_rate - 1 to whatever; 8 is the legacy default, most motion looks fine at 12–16.
  • crf_quality - a 10-step ladder from Draft (CRF 30) to Lossless. Standard (CRF 23) is a great everyday default; drop to Good/High if you're keeping the file.
  • pixel_format - 8-bit yuv420p or 10-bit yuv420p10le. 10-bit keeps gradients cleaner if your whole chain supports it.
  • audio (AUDIO, optional) - mux it in: AAC for MP4, Opus for WebM. Plus audio_bitrate and an audio_filters string if you need to shape the track.
  • save_metadata_preview_image - writes a preview PNG alongside, in the same spirit as ComfyUI stuffing the workflow into the PNG. Nice-to-have for a quick look without opening the video.
  • save_output - flip this off and it writes to the temp folder instead, handy for throwaway previews that shouldn't clutter your output directory.

Output

Filenames (VHS_FILENAMES) - file descriptors compatible with video-preview consumers. Wire it to a VHS preview or upload node and the encoded file appears in your UI as if VHS itself had written it.

Installing and troubleshooting

Pack-level, it's the usual:

cd ComfyUI/custom_nodes
git clone https://github.com/haroonaslam/WorkflowX-Configurator

or search "WorkflowX Configurator" in ComfyUI Manager, then restart and hard-refresh.

The classic failure is a "No valid ffmpeg found" error at execution - it means none of the four ffmpeg sources turned up, usually because your ComfyUI venv lacks imageio_ffmpeg and ffmpeg isn't on PATH. Fix: pip install imageio-ffmpeg into ComfyUI's environment, or install ffmpeg system-wide. Second gotcha: not every ffmpeg build has every encoder. libsvtav1 is a common omission, so if AV1 errors with "encoder not found," fall back to h264 rather than hunting for a new binary. Everything else - frame shape mismatches, unsupported codec settings - fails with an actionable message at execution time rather than silently, which is more than most save nodes bother with. One honest note: this pack is young and barely has a community footprint, so there's no battle-tested hive mind behind it yet. For a critical job, VHS remains the safe, boring choice; for a VHS-compatible encoder with cleaner controls and zero extra installs, this is genuinely worth a try.

CategoryWorkflowX/Video

Inputs (13)

NameTypeDefaultDescription
imagesIMAGE
frame_rateFLOAT8
filename_prefixSTRINGAnimateDiff
formatCOMBOvideo/h264-mp43 options: video/av1-webm, video/h264-mp4, video/h265-mp4
crf_qualityCOMBOStandard (CRF 23)10 options: Draft (CRF 30), Standard (CRF 23), Good (CRF 20), High (CRF 18), Very High (CRF 16), Ultra (CRF 14), +4
pixel_formatCOMBOyuv420p (8-bit)2 options: yuv420p (8-bit), yuv420p10le (10-bit)
color_rangeCOMBOAuto (format default)3 options: Auto (format default), Full / pc, Limited / tv
save_metadata_preview_imageBOOLEANtrue
audio_bitrateCOMBOSource/default7 options: Source/default, 96k, 128k, 160k, 192k, 256k, +1
audio_filtersCOMBO[]10 options: Denoise light, De-click, High-pass rumble cut, Low-pass hiss cut, De-esser light, Presence boost, +4
save_outputBOOLEANtrue
audiooptAUDIO
vaeoptVAE

Outputs (1)

NameTypeDescription
FilenamesVHS_FILENAMES