Nodes/comfyUI_LLM/🖼️图片合成视频并上传到云
ComfyUI Node

🖼️图片合成视频并上传到云

Frame batch → MP4 → public URL

By XieJunchen·Created about a year ago·Updated about a month ago· 2
🖼️图片合成视频并上传到云
  • images
  • audio
  • url
fps12
cloud_typeqiniu
access_key
secret_key
bucket_name
domain
foldervideo
key_prefixcomfyui_
extmp4

This is the pack's finishing move. Where CloudImageUploadNode uploads frames and CloudVideoUploadNode uploads a file, this one takes an IMAGE batch, encodes it into an actual video file, muxes in audio if you give it any, and uploads the result to Qiniu - all inside one node. "🖼️ 图片合成视频并上传到云" (compose images into video and upload to cloud). If you've ever wanted to render a frame sequence and end up with a shareable video link without touching the file system, this is the node.

How it works

Three steps, and here's where the pack's video nodes diverge: instead of shelling out to a system ffmpeg binary, this one uses imageio_ffmpeg's bundled ffmpeg executable, so it works without installing ffmpeg separately. The batch becomes a list of PIL images, each piped as raw RGB into ffmpeg (libx264, yuv420p - the universally-playable H.264 baseline), at your chosen fps. If you feed an AUDIO input, it writes the waveform to a temp WAV with torchaudio and muxes it in as AAC with -shortest. Then the MP4 goes up to Qiniu and you get back the public url.

Inputs that matter

  • images (IMAGE) - the frame sequence. One frame per image in the batch, played in order.
  • fps - 1–60, default 12. For slideshow-style outputs 12 is fine; for real motion you want 24+.
  • audio (AUDIO) - optional despite sitting in the required list (default None). The natural source is this pack's SplitVideoByFrames output - that node extracts the original soundtrack, and this one puts it back on the video.
  • access_key / secret_key / bucket_name / domain - Qiniu credentials, same as the rest of the pack's cloud nodes (defaults from cloud_config.json, full setup in the CloudImageUploadNode article).
  • folder / key_prefix / ext (mp4, mov, avi, mkv) - bucket path and container. Keep ext as mp4 unless you have a reason not to.
  • Output: url (STRING), the public video link.

Installing it

ComfyUI Manager → search comfyUI_LLM, or:

cd ComfyUI/custom_nodes
git clone https://github.com/XieJunchen/comfyUI_LLM
pip install -r ComfyUI/custom_nodes/comfyUI_LLM/requirements.txt
# restart ComfyUI

imageio-ffmpeg, qiniu, and torchaudio are all in the pack's requirements.txt, so a Manager install gets the whole chain.

Where people get burned

  • All frames must match resolution. The encoder uses the first frame's width and height, and rawvideo piping doesn't resize - a mixed-size batch produces a corrupt video or a hard error. Normalize before this node.
  • Audio is all-or-nothing. A silent placeholder (the kind SplitVideoByFrames returns for audio-less videos) is treated as "no audio" and skipped, which is the behavior you want. But a real-but-short track gets padded to the video length only via -shortest - mismatch the durations and the mux can clip.
  • Qiniu-only in practice. The JD Cloud branch raises NotImplementedError.
  • It's an output node and a network call. A big batch means a big upload; the graph blocks until it's done. Patience, or smaller batches.

For a "generated frames → video link" pipeline this collapses about four nodes into one. If your workflow ends in "I need to send someone a URL," this is the node you'll actually reach for in this pack.

Category云服务

Inputs (11)

NameTypeDefaultDescription
imagesIMAGE
fpsINT121–60
cloud_typeSTRINGqiniu
access_keySTRING
secret_keySTRING
bucket_nameSTRING
domainSTRING
folderSTRINGvideo
key_prefixSTRINGcomfyui_
extCOMBOmp44 options: mp4, mov, avi, mkv
audioAUDIO

Outputs (1)

NameTypeDescription
urlSTRING