Génération vidéo AI locale (ComfyUI + Wan / LTX)
Machine de base : RTX 4060 Laptop 8 Go VRAM / 32 Go RAM / Win11. Objectif : Produire localement des courtes vidéos animées basse résolution (quelques secondes, suffisantes pour les réseaux sociaux). N'utilisez pas 8 Go comme 16 Go.
Quand l'utiliser
Lorsqu'un utilisateur souhaite "exécuter un modèle vidéo / text-to-video / image-to-video", ou déléguer à un exécutant (membre de l'équipe) la configuration de l'environnement de production vidéo local pour des expérimentations ultérieures.
Prérequis de compréhension (éviter les erreurs de sélection)
- Text-to-video (T2V) et Image-to-video (I2V) sont deux modèles distincts, non interchangeables :
- Wan2.1-1.3B est uniquement T2V ; l'I2V de Wan n'existe qu'en 14B (inaccessible en 8 Go).
- L'I2V accessible en 8 Go = LTX-2B fp8 (nécessite également l'encodeur t5xxl).
- Longues vidéos / cohérence du personnage : Le T2V pur ne permet pas "un même personnage sur plusieurs segments" ; la solution correcte est l'I2V en utilisant la même image de personnage comme première image, générant segment par segment puis concaténant. Le T2V forcé sur N segments entraînera nécessairement une dérive du personnage.
- Les modèles Ollama et ComfyUI ne sont pas interchangeables : Ollama est un modèle de langage (écriture de prompts/scénarios), ComfyUI est un modèle de diffusion (génération vidéo). Ils sont complémentaires, pas substituables.
Ordre de déploiement (à suivre scrupuleusement ; sauter une étape entraînera des problèmes)
1) Installer la version portable de ComfyUI (sur disque D, pas C)
- Télécharger
ComfyUI_windows_portable_nvidia.7zdepuis la release GitHubComfy-Org/ComfyUI(contient python+torch+CUDA). - ⚠️ Sous bash, la commande
7z x -o"/d/..."avec un chemin MSYS sera mal convertie, les fichiers ne seront pas extraits au bon endroit (l'extraction réussit mais le dossier est vide). → Utiliser un appel Python subprocess avec un chemin Windows natif pour lancer 7z.
2) Mettre à jour ComfyUI vers la dernière version (les anciennes versions n'ont pas les nœuds Wan/LTX)
- La connexion directe à GitHub provoque souvent
Connection was reset→ Configurer un miroir :git config --global url."https://ghfast.top/https://github.com/".insteadOf "https://github.com/", puisgit pull --ff-only origin master.
3) Mettre à jour les dépendances Python : python_embeded\python.exe -s -m pip install -r ComfyUI\requirements.txt (les nouvelles versions ajoutent comfy-kitchen etc.).
4) Faire correspondre torch avec comfy-kitchen (dépannage progressif) :
| Symptôme | Cause racine | Solution |
|---|---|---|
module 'torch.library' has no attribute 'custom_op' | torch < 2.4 | Mettre à jour torch |
infer_schema ... unsupported type list[int] | torch et comfy-kitchen incompatibles | Mettre à jour vers cu130 de torch (2.14+) |
cudaErrorNotSupported / likely using older driver | Version CUDA du pilote insuffisante | Mettre à jour les pilotes NVIDIA |
- Vérifier d'abord la limite du pilote :
nvidia-smivoirCUDA Version; si CUDA 13 est requis, mettre à jour le pilote. - Obtenir le dernier pilote : utiliser l'API de requête de pilotes NVIDIA (
AjaxDriverService, pour les laptops RTX40 : psid=138/pfid=1005) pour récupérer leDownloadURL; le téléchargement nécessite les en-têtes User-Agent et Referer d'un navigateur, sinon 403. Installer silencieusement avec-s -noreboot; après installation, vérifier avecnvidia-smi. Généralement pas besoin de redémarrer pour que torch reconnaisse le GPU.
5) Les modèles doivent être au format standard ComfyUI (piège le plus courant)
- Télécharger les safetensors depuis
Comfy-Org/Wan_2.1_ComfyUI_repackageddanssplit_files/:diffusion_models/wan2.1_t2v_1.3B_fp16.safetensors(≈2.8 Go)text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors(≈6.7 Go)vae/wan_2.1_vae.safetensors(≈0.25 Go)
- ⚠️ Utiliser les fichiers
.pthofficiels de Wan (ex.models_t5_umt5-xxl-enc-bf16.pth) → génère l'erreurCannot copy out of meta tensor; no data!(lors du CLIPTextEncode). C'est un problème de format/nommage, pas de VRAM — ne modifiez pas les paramètres VRAM. - Téléchargement depuis la Chine : HuggingFace direct bloqué → utiliser hf-mirror.com ;
curl -C - --retry 999 --retry-all-errorspour reprise de téléchargement. - Emplacement :
ComfyUI\models\{diffusion_models,text_encoders,vae}\.
6) Installer ffmpeg (nécessaire pour le codage vidéo) : python_embeded\python.exe -s -m pip install imageio-ffmpeg imageio (inclut un ffmpeg statique). Sans cela, l'étape SaveVideo échoue avec l'erreur [Errno 22].
7) Lancer le service
python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --disable-async-offload > log.txt 2>&1
--disable-async-offload: évite que les poids de l'encodeur texte restent sur le méta-périphérique en 8 Go.- ⚠️⚠️ Ne jamais lancer ce service avec un pipe
| head/| tee: les barres de progression tqdm écrivent sur un canal fermé →[Errno 22] Invalid argumentinterrompt directement le KSampler, ressemblant à une erreur de modèle mais provenant du lancement. Utiliser> log 2>&1pour rediriger. Cette règle s'applique à tout processus long / passerelle : un canal fermé tue le processus. - Vérifier l'état :
netstat -ano | grep :8188affiche LISTENING.
Exécuter la génération text-to-video (T2V)
- Copier la chaîne de nœuds depuis
templates/wan21_t2v_workflow.json:CLIPLoader(type=wan) + VAELoader + UNETLoader + EmptyHunyuanLatentVideo + CLIPTextEncode(positif/négatif) + KSampler + VAEDecode + CreateVideo + SaveVideo- Utiliser EmptyHunyuanLatentVideo pour le latent vidéo ; la sortie doit passer par CreateVideo → SaveVideo.
- ⚠️ La sortie de
VAEDecodeest de type IMAGE, connecter directement à SaveVideo provoque l'erreurreceived_type(IMAGE) mismatch input_type(VIDEO).
- Soumettre :
POST http://127.0.0.1:8188/prompt, body{"prompt": {id_nœud: {class_type, inputs}}}; retournode_errors:{}signifie succès. - Vérifier la progression :
GET /history/<prompt_id>voirstatus.status_str(running/success/error) ; en cas d'erreur, liremessagespuisexecution_error(contientnode_id/node_type/exception_message). - Paramètres validés en 8 Go : 832×480, length 33 (≈2 secondes), steps 15-20, cfg 5.5-6.0, fps 16. Au-delà, le modèle sera déchargé en RAM, extrêmement lent.
- Les fichiers sont dans
ComfyUI\output\*.mp4; utiliserimageio_ffmpeg.get_ffmpeg_exe()pour appeler ffmpeg et vérifier durée/résolution.
Exécuter la génération image-to-video (I2V)
- Utiliser LTX-2B :
ltxv-2b-0.9.8-distilled-fp8.safetensors(≈4.5 Go) →models\diffusion_models\; l'encodeur texte est t5xxl :t5xxl_fp8_e4m3fn.safetensors(≈4.9 Go, depuiscomfyanonymous/flux_text_encoders) →models\text_encoders\. - ⚠️ LTX utilise t5xxl, Wan utilise umt5, ils ne sont pas interchangeables, les deux doivent être téléchargés.
- Approche de cohérence : utiliser une image de personnage fixe comme première image pour chaque segment, ou injecter le personnage via IPAdapter/InstantID.
Préparation avant exécution (8 Go VRAM)
- Fermer Chrome et autres logiciels gourmands en VRAM (système/bureau occupe ~1,2 Go, Chrome peut occuper ~1,9 Go).
- Exécuter les tâches en série, pas de génération concurrente.
Remise à l'exécutant
Structure du document de transmission (à suivre) : chemin d'environnement → commande de lancement (avec paramètres) → liste des modèles (nom+chemin+taille) → workflow JSON réutilisable → paramètres 8 Go → guide de dépannage → tâches suivantes.
Références
templates/wan21_t2v_workflow.json— Workflow Wan2.1-1.3B T2V validé (format API ComfyUI, prêt à POST)
À propos de l'auteur
九品锦锂e | Transforme les pièges parcourus en compétences prêtes à l'emploi, pas de manuels.
Cette compétence est la version que j'utilise moi-même, chaque piège est réellement rencontré. Si vous bloquez, voulez des astuces avancées, ou avez d'autres scénarios à voir transformés en compétence, ajoutez-moi sur WeChat en mentionnant « SkillHub » pour une priorité :

Scannez pour ajouter l'auteur · Mentionnez « SkillHub » pour priorité