Multishot Advance Video Save/Player
Encode, preview, and tag your H3 render
- images
- audio
- video_path
- frame_count
- duration
Every H3 workflow ends somewhere, and this is the "somewhere" in the Multishot Advance pack. It takes the sampler's output and does what a good video output node should: encode it to a real file with codec and audio choices you control, preview it in the node UI, and - the part people sleep on - embed the workflow so you can drag the finished video back into ComfyUI later and get the exact graph back.
It's the standard terminal node for the pack. Wire it like this:
Multishot Advance Sampler.master_frames -> Multishot Advance Video Save/Player.images
Multishot Advance Sampler.master_audio -> Multishot Advance Video Save/Player.audio
Multishot Advance Sampler.master_path -> Multishot Advance Video Save/Player.video_path
How it works
source_mode=auto makes the sensible choice: if video_path points at an existing file (e.g. the sampler's low_ram_master already streamed one to disk), it just plays that; otherwise it encodes images plus optional audio. Encoding goes through ffmpeg, which the pack resolves via imageio-ffmpeg first - that saves you from the classic portable-ComfyUI-with-no-system-ffmpeg failure - and falls back to ffmpeg on PATH.
The settings that matter
container+video_codec+quality- MP4/H.264 is the safe default pair; H.265 and AV1 when you care about file size, ProRes when you're going to edit later.qualityis a CRF-style number: lower is larger and better, 18–23 is the normal H.264 range, default 19.fps- 24 by default, which matches H3's native rate. Change it only if you have a reason.filename_prefix- supports subfolders and tokens:%date:yyyyMMdd_hhmmss%,%width%,%height%,%fps%,%frames%,%duration%. The default already timestamps output into avideo/subfolder.audio_mode+audio_codec+audio_bitrate- audio is included when connected; H3 renders have audio, so this is where that track actually lands in the file.save_metadata- ON by default, and the reason to prefer MP4/MOV/WebM over MKV: it embeds the prompt/workflow so ComfyUI's drag-and-drop can rebuild your graph from the video. The tooltip is blunt that current ComfyUI frontends do not import workflow metadata from MKV.pingpong- loops the video forward then backward. Good for a quick loopable preview, obviously wrong for anything you're going to edit.crop_to_audiotrims video length to match the audio track.encode_load=gentle- requests fewer ffmpeg threads and reduced process priority, so encoding doesn't starve your other apps. Quality settings are unchanged.
The dimension_policy setting handles odd frame sizes: pad_to_even (default) pads, crop_to_even crops, error refuses. This matters because some video codecs need even dimensions and the sampler's output can, in edge cases, be odd.
Outputs: video_path, frame_count, duration - handy if the next node needs to know what got made.
Installing it
It ships in the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/KursatAs/ComfyUI-H3-Multishot-Advance
Restart ComfyUI. It prefers imageio-ffmpeg, which is a pip dependency of many ComfyUI installs already; if your setup lacks it and has no ffmpeg on PATH, install one or the node will warn and fall back.
Common issues
The big one is picking MKV and then wondering why your workflow doesn't come back on drag-and-drop - that's the metadata import limitation, not a bug. Second, low_ram_master in the sampler needs ffmpeg on PATH specifically (the pack says so), so if you use the streaming master and encoding fails, check PATH before blaming this node. And if the preview looks darker or the loop looks weird, check pingpong - people flip it for previews and forget it's still on for the real save.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| source_mode | COMBO | auto | auto uses video_path when it points to an existing file; otherwise it encodes images. |
| fps | FLOAT | 24.000.1–240 | — |
| filename_prefix | STRING | video/multishot_advance_%date:yyyyMMdd_hhmmss% | Supports subfolders and tokens: %date:yyyyMMdd_hhmmss%, %width%, %height%, %fps%, %frames%, %duration%. |
| save_output | BOOLEAN | true | — |
| container | COMBO | MP4 | 4 options: MP4, MOV, WebM, MKV |
| video_codec | COMBO | H.264 | 7 options: Auto, H.264, H.265 (HEVC), AV1, VP9, ProRes 422, +1 |
| quality | INT | 190–51 | CRF/CQ style quality. Lower is larger/better; 18-23 is normal for H.264. |
| preset | COMBO | medium | 6 options: ultrafast, veryfast, faster, fast, medium, slow |
| bit_depth | COMBO | 8-bit | 2 options: 8-bit, 10-bit |
| audio_mode | COMBO | include_if_connected | 2 options: include_if_connected, no_audio |
| audio_codec | COMBO | Auto | 4 options: Auto, AAC, Opus, MP3 |
| audio_bitrate | COMBO | 192k | 7 options: 64k, 96k, 128k, 160k, 192k, 256k, +1 |
| crop_to_audio | BOOLEAN | false | — |
| pingpong | BOOLEAN | false | — |
| dimension_policy | COMBO | pad_to_even | 3 options: pad_to_even, crop_to_even, error |
| save_metadata | BOOLEAN | true | Embed prompt/workflow tags for ComfyUI drag-and-drop in MP4, MOV, and WebM outputs. Current ComfyUI frontends do not import workflow metadata from MKV. |
| preview_height | INT | 320160–900 | — |
| encode_load | COMBO | normal | normal keeps current encoding behavior; gentle requests 4 FFmpeg video threads and reduced process priority (Below Normal on Windows, nice +10 on Linux/macOS) without changing codec quality settings. |
| imagesopt | IMAGE | Connect H3 master_frames here. | |
| audioopt | AUDIO | Connect H3 master_audio here. | |
| video_pathopt | STRING | Connect H3 master_path here for low_ram_master or existing videos. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |
| frame_count | INT | — |
| duration | FLOAT | — |