Nodes/ComfyUI-SA-Nodes-QQ/Video Audio Merge AB (QQ)
ComfyUI Node

Video Audio Merge AB (QQ)

Crossfade two clips into one video — with audio that follows

By siraxe·Created 11 months ago·Updated 2 days ago· 72
Video Audio Merge AB (QQ)
  • image_A
  • image_B
  • audio_A
  • audio_B
  • images
  • audio
  • debug
Overlap_A24
Overlap_B24
video_fps24.0
easing_clamp0.50
easing_type
normalize_volumetrue
b_volume_gain1.00
cut_modefalse

You've got two Wan clips and you want one continuous video. A hard cut looks cheap, and stitching frame tensors naively means a visible seam where the two clips' colors and motion disagree. VideoAudioMergeAB is the pack's two-clip assembler: it crossfades A into B over a configurable overlap with real easing, merges their audio with the same fade envelope, and spits out a single image sequence plus a sync'd AUDIO track. If your Wan workflow ends in "two clips, one save," this is the seam-remover.

It's from siraxe/ComfyUI-WanVideoWrapper_QQ, the "(QQ)" Wan pack - one of the "Video Merge ABC"-family nodes that cover the two- and three-clip cases.

How it works

The merge math is a weighted blend across an overlap zone. Overlap_A and Overlap_B define the crossfade region (the node safely clamps them to available frames), and easing_type (linear, ease_in, ease_out, ease_in_out) shapes how opacity ramps across it, with easing_clamp controlling how much of the curve is used. Frames before the overlap come from A untouched, frames after from B - the only blended frames are the seam.

Two behaviors worth knowing. First, a single-frame A gets special treatment: it's treated as a title/still that fades out over B's opening frames, so you can overlay a logo or a starting frame without writing merge logic yourself. Second, cut_mode - when on, it does a hard cut with zero audio processing, which is your "just concatenate, I'll handle the polish" escape hatch. In normal mode, audio follows the same envelope: A's audio fades out, B's fades in, with optional normalize_volume and a b_volume_gain multiplier (0–2) if B needs to sit louder. Audio is blended to a common sample rate and channel count on CPU to avoid device-mismatch crashes.

The debug output carries a dict with the frame counts, overlap, and sample rate used - handy when a merge comes out shorter than expected.

Inputs and outputs that matter

  • image_A / image_B - the two clips to merge (order matters: A is first).
  • Overlap_A / Overlap_B - crossfade length in frames (default 24 each).
  • easing_type + easing_clamp - the fade curve.
  • audio_A / audio_B (optional) - AUDIO tensors; without them you get silent output.
  • cut_mode - hard cut, no audio work.
  • video_fps - used for audio timing (default 24).

Outputs: images (IMAGE), audio (AUDIO), debug (DEBUG).

Installation

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

Restart ComfyUI (or ComfyUI Manager → "WanVideoWrapper_QQ"). No extra Python deps - pure torch; the pack's requirements.txt is empty. After the v1.3.4 rename to ComfyUI-SA-Nodes-QQ, delete any old wanwrapper_qq folder.

Common issues

The most common surprise: an overlap larger than half a clip's frames. The node clamps to safe values, but if both clips are short and your overlap is huge, you're blending most of the video and it turns to mush - keep overlaps a fraction of the shorter clip. Audio drift is the other one: if the audio you feed in isn't roughly the same duration as its video clip, the merge truncates to fit, so trim tracks first. And remember b_volume_gain only helps B - there's no matching A-gain, so a quiet A means normalizing fights you; turn off normalize_volume if you want true levels preserved.

CategoryWanVideoWrapper_QQ/video

Inputs (12)

NameTypeDefaultDescription
image_AIMAGE
image_BIMAGE
Overlap_AINT240–1000
Overlap_BINT240–1000
video_fpsFLOAT24.01–120
easing_clampFLOAT0.50-1–2
easing_typeCOMBO4 options: linear, ease_in, ease_out, ease_in_out
normalize_volumeBOOLEANtrue
b_volume_gainFLOAT1.000–2
cut_modeBOOLEANfalse
audio_AoptAUDIO
audio_BoptAUDIO

Outputs (3)

NameTypeDescription
imagesIMAGE
audioAUDIO
debugDEBUG