HappyHorse 参考生视频
Keep your character across a clip with 1–9 reference images
- reference_images
- video
- video_url
- video_path
Multi-reference video generation. Translation: you hand the model a few pictures of your character (or product, or scene) and it generates a clip where that thing stays recognizable. For character work that's the closest thing to a fix for the eternal "who is this person now" problem - the exact issue the KB's character-consistency essay spends hundreds of lines on. HappyHorse R2V ("HappyHorse 参考生视频") is this pack's take on it, up to 9 reference images and a prompt syntax that lets you point at them by number.
How it works
Same API wrapper as the rest of the pack, plus OSS. Every reference image gets uploaded to your bucket and sent to the API as a reference_image entry, and your prompt references them with [Image 1], [Image 2] and so on. That placeholder syntax is the model's contract with you: write "she wears the red jacket from [Image 1], and [Image 2] shows the pose" and each tag binds to the uploaded image in order. Prompt hygiene matters more here than in T2V - a reference that contradicts the text is how you get a character that drifts mid-clip.
The inputs that matter
- api_key - the shared DashScope key.
- reference_images - an IMAGE batch, 1 to 9 frames. This is exactly where HappyHorse ImageBatchMulti (the pack's fifth, free node) comes in: wire LoadImage × N into ImageBatchMulti, and its single
imagesoutput into this input. - prompt - multiline, using
[Image N]tags. - resolution - 720P / 1080P. ratio - 16:9, 9:16, 1:1, 4:3, 3:4.
- duration - 3 to 15s. seed, watermark - standard.
- OSS_ACCESS_KEY / OSS_SECRET_KEY / bucket / endpoint - required in practice.
The same degradation trap as I2V
If any OSS field is empty, the node drops your references and runs T2V instead - a video comes back, but it's not your character. It prints the 降级为文生视频 warning in the console; missing references plus an empty prompt raises an error. Configure OSS before you waste a render: bucket + RAM AccessKey/Secret + endpoint matching the bucket's region. The AccessDenied error tells you the correct endpoint in its details.Endpoint if you got the region wrong.
Outputs and install
The same video / video_url / video_path triple as every node in the pack - native VIDEO for downstream nodes or inline preview, a ~24-hour public URL, and the downloaded mp4 under output/happyhorse/.
Install is the pack install: ComfyUI Manager (search "Comfyui-Wenyi-demo1"), or git clone https://github.com/WY-S/Comfyui-Wenyi-demo1 into custom_nodes plus pip install -r requirements.txt, then restart. The example test_r2v.json workflow shows LoadImage × 2 → ImageBatch → R2V if you want a starting point.
One honest note: R2V only earns its keep when the references actually anchor identity across motion. If your use case is a single consistent still, I2V is the cheaper, less setup-heavy sibling; R2V is for when you need the model to hold a character through several reference angles in one clip.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | 阿里百炼 API Key(填写后自动保存到 config.json) | |
| reference_images | IMAGE | 参考图(支持 batch 传入多张,1~9 张)。prompt 中通过 [Image 1]、[Image 2]... 引用 | |
| prompt | STRING | — | |
| resolution | COMBO | 1080P | 2 options: 720P, 1080P |
| ratio | COMBO | 16:9 | 5 options: 16:9, 9:16, 1:1, 4:3, 3:4 |
| duration | INT | 53–15 | — |
| seed | INT | 00–2147483647 | — |
| watermark | BOOLEAN | true | — |
| OSS_ACCESS_KEYopt | STRING | 阿里云 OSS AccessKey ID(留空使用 config.json 默认值) | |
| OSS_SECRET_KEYopt | STRING | 阿里云 OSS AccessKey Secret(留空使用 config.json 默认值) | |
| bucketopt | STRING | OSS Bucket 名称(留空使用 config.json 默认值) | |
| endpointopt | STRING | oss-cn-beijing.aliyuncs.com | OSS Endpoint,如 oss-cn-beijing.aliyuncs.com(留空使用 config.json 默认值) |
| modelopt | COMBO | happyhorse-1.0-r2v | 模型名称(固定值,不可修改;OSS 不全时自动降级为 t2v) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| video_path | STRING | — |