A workflow named 4K can contain a modest generation stage followed by several different transformations. That is not inherently a problem—but it changes what you should inspect, benchmark and describe.
This package supplies nine JSON files: eight H3 generation presets across three families, plus one standalone video post-processing graph. The source descriptions use both eight and nine in their titles. The actual distinction is useful: the ninth file is not a fourth H3 generation method.
Across the files there are 316 nodes and 422 explicit links. This guide reports their saved configuration, not new generated videos, image-quality results, timing measurements or soundtrack acceptance.
Keep the numbering and resolution labels straight
The local folder order differs from the numbered entries in the source description and some save prefixes. Match by route name and resolution label, not by assuming folder 01 means source entry 01.
| Local code | Route | Spatial post-processing request |
|---|---|---|
| 01 | OpenVDN, labelled 768P | No SeedVR2/resize tail |
| 02 | OpenVDN, labelled 2K | SeedVR2 target 1440, resize request 2560×1440 |
| 03 | OpenVDN, labelled 4K | SeedVR2 target 2160, resize request 3840×2160 |
| 04 | SelfLift, labelled 2K | Target 1440, resize request 2560×1440 |
| 05 | SelfLift, labelled 4K | Target 2160, resize request 3840×2160 |
| 06 | SelfLift, labelled 768P | No SeedVR2/resize tail |
| 07 | Sigma two-pass, labelled 2K | Target 1440, resize request 2560×1440 |
| 08 | Sigma two-pass, labelled 4K | Target 2160, resize request 3840×2160 |
| 09 | Standalone source-video processing | SeedVR2 target 2160; no separate fixed-raster resize node |
These are requests, not measured outputs. A 2× interpolation option is temporal; it does not promise 2× spatial enlargement. A learned latent upscaler is also a different operation from SeedVR2 applied after decoding.
OpenVDN: one active example, not three finished clips
Each OpenVDN export contains three repeated generation examples, but only the main example is enabled. The other two chains—including their save nodes—are bypassed. Their 4K-looking save prefixes do not prove that they receive the active main branch's post-processing.
In the active main example, image 15 connects to first_frame and image 56 to last_frame on conditioner 6. Generic reference-image, video, drive-audio and final-audio ports are unconnected.
This is especially important in codes 02 and 03: their prompt wording describes the pictures as references rather than first/last frames, but the sockets are explicitly first and last. Review the intended input roles in the matching implementation; do not let prose erase the actual wiring. Image content and endpoint fidelity have not been visually verified here.
What supplies the schedule
The base model selection is minimax_h3_hybrid_fl2va_ref2va_b25-49-int8.safetensors. The encoder is the NVFP4/AWQ-named H3 Qwen selection, and the selected video VAE is INT8/ConvRot-named. Those differ from the encoder/video-VAE choices in the other families.
Composer 2 selects OpenVDN/vdn-minimax-h3 and stage_dmd_8nfe. Its saved verify_hashes control is false and allow_structural_base is true. Checking the JSON file's SHA-256 is not the same as verifying model-weight hashes or compatible stage assets.
ExecutionPlan 7 receives the composed model and conditioning latent. Its model output reaches the guider, and its sampler/sigmas outputs reach the sampler. No explicit numeric sigma array is serialized. The DMD8 and evaluation-count labels are not observed execution counts; the plan's report output is unused.
The main conditioner stores 1344×768 and length 124 without external dimension/time links. At configured 24 fps, 124 output frames would be about 5.167 seconds. AUTO task selection or normalization may affect actual output, so a five-second prompt is not exact-duration evidence.
Where the larger output request appears
Code 01 decodes directly into video assembly and interpolation. Codes 02 and 03 instead send the decoded images through SeedVR2 and ImageResizeKJv2 before those stages.
An Int node supplies SeedVR2's 1440 or 2160 target. The resize node requests 2560×1440 or 3840×2160, Lanczos, keep_proportion set to resize, divisibility by 2 and CPU processing. Confirm the implementation's aspect handling and inspect the saved raster; neither the target nor cached diagnostic text is a render measurement.
Audio comes from the AV decoder and bypasses the spatial processing. SeedVR2 is not an audio enhancement stage. These tails affect the main generated-image route, not input references or the two bypassed examples.
SelfLift: a four-step LoRA filename does not set four steps
The SelfLift files select a LightX2V LoRA whose filename includes four-step wording, at approximately 0.65 strength. However, BasicScheduler stores simple, 8 steps and denoise 1. H3SigmaRefiner then applies configured controls extra_steps 1, start_at_sigma 0.7, end_at_sigma 0 and cosine spacing before SelfLift receives the schedule.
That is neither a demonstrated four-step run nor a measured eight-evaluation benchmark. Exact transformed sigma counts require the matching implementation. LowVRAMAttention and ChunkFeedForward nodes in these three files are bypassed; their mere presence is not a memory-optimization result.
SelfLift stores CFG 1, transition step 6, low-resolution scale approximately 0.4, rho 0, weight range 0.5–1, a BF16 learned latent upscaler and no high-resolution tiling. Negative conditioning comes through a zero-out node. These controls describe the intended latent processing, not accepted intermediate dimensions or a quality gain.
Reference count changes between variants
Code 04 has two active image references. Code 05 has only image 164 active; image 150 remains wired but is bypassed. Code 06 has one active reference and no second loader. Do not copy the two-reference description into all three presets.
Their generation selector stores 16:9, 1.03 MP and multiple 32. Linked values override old 1344×768 widgets. The duration control of 5 feeds the alignment expression and requests 124 frames; this is not proof of an exactly five-second encoded file.
Codes 04/05 add SeedVR2 and fixed-raster requests after decoding. Code 06 does not, but its SelfLift sampler still uses a learned latent upscaler internally. Calling it “no upscaling at all” would confuse latent processing with the absent pixel-space tail.
Sigma two-pass: split after refinement, not a guessed 6+4
The Sigma files select a Ref2V eight-step LoRA at approximately strength 1. BasicScheduler instead stores simple, 10 steps and denoise 1. Its output passes through the same style of sigma-refinement controls before SplitSigmas divides the sequence at step 6.
Since the split happens after refinement, do not automatically call the passes 6+4 or declare the actual evaluation count. The model also passes through a video/audio sigma-shift configuration of 12/3. Both samplers share a fixed-control noise node, Euler selection and BasicGuider.
Only image 139 is active. Another image remains wired but bypassed, while the other image loaders are bypassed and disconnected. The coarse selector is 16:9, 0.5 MP and multiple 32—not the conditioner's old saved dimensions.
The first sampler's DENOISED_OUTPUT is separated into video and audio latents. Video enters a learned upscaler configured for multiplier 2, FP16 and alignment 32. Audio bypasses that upscaler and is concatenated with the enlarged video latent before the second sampler.
The second sampler's OUTPUT feeds video/audio decoding. The later SeedVR2 and resize stages are yet another spatial-processing layer. None of this establishes unchanged audio, exact output pixels, identity preservation or a measured improvement over another family.
Interpolation and generated audio are shared output concerns
The eight generation presets assemble decoder-produced audio with the images at a stored 24 fps. The conditioner's mux_audio output is not the selected soundtrack route in the SelfLift/Sigma files; there are no linked source-audio inputs in these saved examples.
Their interpolation nodes request 2×, motion auto, scene-change threshold 0.24 and keep_audio on. Combined VIDEO and separate image/audio inputs are connected. Check the implementation's input precedence rather than inventing how it chooses among them.
A 24→48 fps intention is not a measured final cadence, doubled frame count, preserved duration or audible synchronization. SaveVideo receives the interpolation node's VIDEO output, with auto format/codec settings.
Preview settings such as 1024 resolution or 12 fps belong to preview utilities, not the final export specification. Cached resize diagnostics are similarly not substitutes for examining an actual result.
Code 09: a source-video path with two active saves
The standalone graph loads video frames and audio. Frames enter SeedVR2 with an Int-linked new_resolution value of 2160. There is no input-size multiplication calculation or separate 3840×2160 resize node in this file, despite selectable-multiple wording in its title.
CreateVideo receives the loaded source audio and source_fps from VideoInfo output 0. It does not use loaded_fps output 5; the old 30 fps widget is overridden. Current loader controls request no forced rate or frame skipping. If you change those controls, recheck the relationship between loaded frames and the source-fps link before assuming correct playback speed.
SaveVideo 20 writes the pre-interpolation result and supplies its VIDEO output to the interpolator. SeedVR2 images are also connected to the interpolator's image input. The final VIDEO output goes to SaveVideo 22. Both saves are active, so this is not a final-output-only graph.
Here the soundtrack originates from loaded source audio, unlike the eight generation presets. The keep_audio flag still does not certify bit-perfect audio copying, correct VFR handling or interpolation quality. Runtime dependencies and hardware support remain untested.
Test the layer you intend to claim
Resolve the matching model assets and custom nodes, choose the intended active inputs, then inspect generation dimensions separately from latent and pixel-space processing. Check the actual sigma schedule where the interface exposes it. Run a small authorized-media test and inspect every intended save.
For a resolution claim, inspect the saved raster. For a speed claim, record hardware, settings and wall-clock time. For audio or motion claims, watch and listen to the result. A filename, target field, cached preview or successful JSON parse cannot replace those checks.
The source-provided tutorial is recorded without live verification. Original assets are preserved; distribution preparation is limited to recorded historical preview cleanup. Covers have not been visually accepted. Model, node, LoRA, media and cover rights require separate review, and nothing in this guide constitutes a blanket license, new benchmark or published result.
Getting the workflows
Published by this channel. The graphs are free; weights, LoRAs and upscaling dependencies are separate and carry their own terms.
- Hugging Face: AI-KSK/minimax-h3-ultra-hd-routes-304 — nine JSONs, covers, SHA256 manifest. Start here.
- ModelScope (魔搭): Sunjian520/minimax-h3-ultra-hd-routes-304
- Civitai: all nine workflows are on the AIKSK account (see the manifest for per-item IDs; three reuse 2937121 / 2937122 / 2937123)
- Run without a local GPU: RunningHub international pages listed in the manifest (AI post IDs per item)
- Tutorial: YouTube · Bilibili
Top comments (0)