🎬Video Output (Gradio)
The video end of your packaged ComfyUI workflow
- images
- audio
Hua_Video_Output (🎬Video Output (Gradio)) is the video counterpart to the pack's image output node: it takes an IMAGE tensor of frames, encodes them into a video or animated image, and hands the result to the Gradio frontend the same way - write the file, drop the path in a temp JSON the webui polls, show the result in the video player. If you're packaging an AnimateDiff or video-gen workflow for someone, this is the node that finishes it.
It's basically a stripped-down VideoHelperSuite export: GIF/WebP go through imageio, everything else (mp4, webm, mp4-hevc, avi, mkv) goes through an ffmpeg subprocess that streams raw frames in on stdin. Frame rate, format, CRF quality, and encoding preset are all inputs. Optional extras include loop_count and pingpong (play forward then backward - a nice touch for loops) for GIF/WebP, an audio input for muxing sound, and a save_output flag that decides between the output dir and temp.
Inputs that matter for a beginner:
images- the frames, i.e. your video model's output.format- pick fromimage/gif,image/webp,video/mp4,video/webm,video/mp4-hevc,video/avi,video/mkv. Defaultvideo/mp4.frame_rate- FLOAT, default 24.crf/preset- quality/speed tradeoff for the codec. Lower CRF = better quality, bigger file; default 23 is a sane middle.unique_id,name- the usual pack plumbing labels.
No outputs. Like the image node, the results show up in the webui's gallery/video player, not as a ComfyUI preview card.
Install: ComfyUI Manager → "ComfyUI_to_webui", or
cd ComfyUI/custom_nodes
git clone https://github.com/kungful/ComfyUI_to_webui.git
then restart. It needs ffmpeg for the video formats - the pack's requirements.txt includes imageio[ffmpeg], which bundles one, and the code falls back to an FFMPEG_PATH env var or a system install if you'd rather manage your own.
Where people get burned, three places. First: video input isn't in this pack. The README is explicit - if your workflow takes a video in, you need VideoHelperSuite's "Load Video (Upload)" node installed separately, and the frontend only shows the upload box when it finds that node. Second: the audio-muxing code currently has its ffmpeg audio path disabled in the shipped source ("diagnostic: audio processing temporarily disabled" is literally in the code), so an audio input is accepted but often silently ignored - don't build a workflow that depends on it. Third: it only saves video frames; if you're packaging a workflow that produces frames plus separate audio from a different node, this won't merge them today. For clean text-to-video or frame-to-gif packaging, though, it works and the pingpong option alone is worth having.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The image frames to save as video/animated image. | |
| filename_prefix | STRING | ComfyUI_Video | Prefix for the saved file. |
| frame_rate | FLOAT | 24 | — |
| format | COMBO | video/mp4 | Output format. |
| unique_id | STRING | default_video_id | Unique ID for this execution provided by Gradio. |
| name | STRING | Hua_Video_Output | 节点名称 |
| loop_countopt | INT | 00–100 | Number of loops (0 for infinite loop). GIF/WebP only. |
| pingpongopt | BOOLEAN | false | Enable ping-pong playback (forward then backward). |
| save_outputopt | BOOLEAN | true | Save the file in the output directory (True) or temp directory (False). |
| audioopt | AUDIO | Optional audio to combine with the video (requires ffmpeg). | |
| crfopt | INT | 230–51 | Constant Rate Factor (lower value means higher quality, larger file). For MP4/WebM/HEVC. |
| presetopt | COMBO | fast | Encoding preset (faster presets mean lower quality/compression). For MP4/HEVC. |
Outputs (0)
No outputs