--- title: Wan Loop Generator emoji: 🔁 colorFrom: purple colorTo: blue sdk: gradio sdk_version: 6.10.0 python_version: 3.10.13 app_file: app.py pinned: false license: gpl-3.0 tags: - image-to-video --- # Wan Loop Generator A minimal Gradio Space that generates a seamless downloadable video loop from one image and a prompt. The output selector offers `MKV (High Quality)` by default and `MP4 (Compressed)`. The prompt is passed unchanged to the text encoder. There is no autoprompt, hidden negative prompt, or filename-based preset. Every result includes an embedded browser-compatible H.264 preview and a separate download in the selected format. MKV downloads therefore retain AV1 quality without sacrificing in-page playback; MP4 selection reuses one file for both preview and download. The runtime uses vendored ComfyUI-WanVideoWrapper nodes with two Wan 2.2 I2V passes (high-noise and low-noise), identical start and end images, RIFE seam interpolation, resident tiled RealESRGAN_x2plus upscaling, and selectable AV1/MKV or H.264/MP4 encoding at 1280x720 and 17 fps. MKV uses the reference Thunar `SUPERIOR` preset (`libsvtav1`, preset 6, CRF 45); MP4 uses `libx264`, preset slow, CRF 28, tune film and faststart. Wan inference remains 832x480, so HD output does not increase diffusion token count. The two wrapper passes use separate `sm_120` AOT block packages with external weights. The packages contain GPU code only: checkpoint files remain unchanged and external to this Space. Incompatible GPU or PyTorch environments fall back to the same eager wrapper path before any module is patched. The application service, tokenizer, wrapper nodes, AOT handles, and UMT5 text encoder are prepared once when the ZeroGPU worker starts. UMT5 is loaded from a pinned, prequantized Quanto QINT8 derivative of the unchanged source BF16 checkpoint, avoiding runtime quantization. On ZeroGPU `large`, VAE, high-noise, and low-noise are loaded on GPU strictly one at a time. The tiled VAE is released after encode and reloaded only for final decode; high is destroyed before low is loaded. Checkpoints are localized once in ephemeral Xet cache, while UMT5 QINT8 remains globally reusable. Weights remain in the Hub repositories listed in the metadata and are mounted as read-only volumes. Each model repository's license and usage conditions apply. Users are responsible for the content they generate. The runtime includes GPL-3.0 ComfyUI code, Apache-2.0 ComfyUI-WanVideoWrapper code, and an MIT-licensed RIFE subset from ComfyUI-Frame-Interpolation. The reduced RRDBNet/inference implementation is derived from Apache-2.0 BasicSR and BSD-3-Clause Real-ESRGAN. Their license texts and provenance are retained alongside the vendored sources. The official x2 checkpoint is downloaded from the upstream v0.2.1 release and verified by size and SHA-256; model weights are not stored in this repository. The default ZeroGPU size is `large`. `ZERO_GPU_SIZE=xlarge` remains available for explicit experiments without changing code or enabling CPU offload.