Nodes/ComfyUI-Happyhorse-Wrapper/ComfyUI-Happyhorse-Wrapper Video Edit
ComfyUI Node

ComfyUI-Happyhorse-Wrapper Video Edit

Re-render an existing clip, not a prompt

By magicwang1111·Created 4 months ago·Updated 4 months ago· 2
ComfyUI-Happyhorse-Wrapper Video Edit
  • reference_images
  • video_url
  • task_id
video_url
prompt
resolution1080P
watermarktrue
audio_settingauto
seed-1

Every other node in this pack starts from nothing - a prompt or a still. Video Edit starts from a video you already have and asks HappyHorse to re-render it to match a new description. Change the scene, restyle it, replace what's in frame while keeping the motion. It's the vid2vid node of the family, and it's the one that feels like cheating when it works.

It's still a cloud call - same async-task pattern, same polling, same temporary URL on the way out. The interesting bit is what's on the way in: this is the only node in the pack whose primary input is a string, because HappyHorse requires your source clip as a public URL.

The inputs that matter

  • video_url - the source clip as an HTTP/HTTPS URL, e.g. a public MP4 or MOV link. This is the gotcha: it must be a URL the model service can fetch, not a local file path and not a ComfyUI IMAGE. If you have a local clip, you need to host it somewhere reachable (a bucket, a CDN, whatever the service can actually hit) and paste that in.
  • prompt - multiline, describes the edit: "turn the daytime street into night, add rain."
  • resolution - 720P or 1080P.
  • audio_setting - auto or origin. origin keeps the source clip's audio track; auto lets HappyHorse generate its own. This matters more here than anywhere else in the pack, because native multi-language audio is HappyHorse's headline feature - it's one of very few models that generates speech synced to the video.
  • watermark - on by default.
  • seed - -1 or pinned.
  • reference_images (optional) - an IMAGE batch, up to 5, to keep characters consistent while the scene changes. Same character-order logic as the Reference To Video node: batch order maps to character1, character2… in your prompt.

How it works

The node builds a media list starting with your video URL typed as video, appends any reference images (uploaded as PNGs to OSS or tmpfiles.org), and sends it all to the happyhorse-1.0-video-edit model. It creates the task, polls until render completes, and returns video_url and task_id. The output URL expires, so wire it into the pack's Preview Video node to save the result as an MP4 in your output folder before it lapses.

Install and setup

Same install as the rest of the pack - one clone, five nodes. ComfyUI Manager → search "ComfyUI-Happyhorse-Wrapper", or:

cd ComfyUI/custom_nodes
git clone https://github.com/magicwang1111/ComfyUI-Happyhorse-Wrapper
python -m pip install -r requirements.txt

Configure config.local.json (or DASHSCOPE_API_KEY env var) with your api_key and endpoint. No model downloads.

Where people get burned

  • "video_url is required" when you've definitely provided a file - it needs a URL, not a path. Host the clip.
  • Tasks failing with a media error - the service couldn't fetch your URL, or the file's behind an auth wall it won't pass. Make it public.
  • Audio doing the wrong thing - check audio_setting. If the source has a track you want preserved, set it to origin; auto regenerates it.
  • Upload flakiness on the reference images - the tmpfiles.org fallback can be unreachable from Alibaba's side; configure OSS in the pack's .env if you keep hitting it.
CategoryComfyUI-Happyhorse-Wrapper

Inputs (7)

NameTypeDefaultDescription
video_urlSTRING
promptSTRING
resolutionCOMBO1080P2 options: 720P, 1080P
watermarkBOOLEANtrue
audio_settingCOMBOauto2 options: auto, origin
seedINT-1-1–2147483647
reference_imagesoptIMAGE

Outputs (2)

NameTypeDescription
video_urlSTRING
task_idSTRING