Retour aux guides

Vidéos publicitaires avec RunPod (pour experts)

Générer des clips parlés et des scènes avec Wan 2.2 et InfiniteTalk sur votre pod RunPod, avec les scripts RoyLead qui font le gros du travail. Coûts, installation, pièges.

Mis à jour le 16 septembre 2026


⚠️ Pour experts. Il faut savoir utiliser un terminal (Linux, macOS ou WSL sur Windows), ssh et ffmpeg, et avoir un compte RunPod avec une carte enregistrée. Si ce n'est pas votre cas, utilisez fal.ai : mêmes modèles, paiement au clip, rien à installer. C'est la voie que le playbook du lancement propose par défaut.

Avec RunPod vous louez un GPU à l'heure et vous y faites tourner les modèles open source : Wan 2.2 pour les scènes muettes (image-to-video) et InfiniteTalk pour les répliques parlées avec les lèvres synchronisées. Les scripts RoyLead font la partie ennuyeuse : ils attendent que ComfyUI soit prêt, installent InfiniteTalk, envoient photos et voix, génèrent les clips à la suite, les téléchargent et montent la vidéo finale.

Combien ça coûte

PosteCoût
GPU RTX PRO 6000 (96 Go), Secure Cloud2,09 $ de l'heure, seulement quand il est allumé
GPU RTX 5090 Community0,69 $ de l'heure, mais 62 Go de RAM : avec les modèles complets, la mémoire peut manquer
Disque réseau de 200 Go avec les modèles14 $ par mois, en permanence
Un tour de 6 clips (pod tout juste allumé)environ 25 minutes, moins d'1 $
Court de 60 s, 12 plans en 3 essaisenviron 2 heures de GPU

Le pod se supprime à la fin de la session : un pod arrêté mais non supprimé continue de coûter. Le disque reste, avec les modèles dessus.

Étape 1 — Compte, clé SSH, disque

  1. Créez le compte sur runpod.io et chargez du crédit.
  2. Dans Settings → SSH Public Keys, enregistrez votre clé publique (~/.ssh/id_ed25519.pub ; si vous n'en avez pas : ssh-keygen -t ed25519). Les scripts utilisent ~/.ssh/id_ed25519 ; pour une autre clé, définissez RUNPOD_SSH_KEY=/chemin/de/la/cle avant de les lancer.
  3. Créez un Network Volume de 200 Go dans un data center EU (ex. EU-RO-1). Le disque contient les modèles (environ 176 Go) : vous ne les téléchargez qu'une fois. Le data center du disque décide où vous pourrez créer les pods.

Étape 2 — Le pod

Template conseillé : « One Click - ComfyUI Wan2.1 - Wan 2.2 » (auteur Hearmeman, id 758dsjwiqz). À la création :

  • GPU : RTX PRO 6000 Blackwell (96 Go) en Secure Cloud. Avec moins de RAM, les modèles complets (28 Go chacun) font sortir le pod de la mémoire au chargement du second.
  • Disque : votre network volume, monté sur /workspace.
  • Variables du template : la première fois download_wan22=true et download_wan21=true (télécharge les modèles sur le disque, 8-10 minutes). Pour les pods suivants, mettez-les à false : les modèles sont déjà sur le disque et les retélécharger le remplit.
  • Port 8188 : c'est ComfyUI dans le navigateur, à l'adresse https://<pod_id>-8188.proxy.runpod.net.

Sur la fiche du pod, dans Connect, récupérez les deux choses dont les scripts ont besoin : le pod id (il est dans l'URL) et l'utilisateur SSH du proxy (<pod_id>-<code>@ssh.runpod.io).

Étape 3 — InfiniteTalk (seulement pour les clips parlés)

Le template n'inclut pas InfiniteTalk. Une seule fois, sur le disque, dans /workspace/ComfyUI/models/, ajoutez ces fichiers (depuis Hugging Face) :

DossierFichierDépôt
diffusion_modelsWan2_1-InfiniTetalk-Single_fp16.safetensorsKijai/WanVideo_comfy (dossier InfiniteTalk)
wav2vec2wav2vec2-chinese-base_fp16.safetensorsKijai/wav2vec2_safetensors
text_encodersumt5-xxl-enc-bf16.safetensorsKijai/WanVideo_comfy
vaeWan2_1_VAE_bf16.safetensorsKijai/WanVideo_comfy
loraslightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensorsKijai/WanVideo_comfy (dossier Lightx2v)

Le modèle de base wan2.1_i2v_480p_14B_bf16.safetensors est déjà téléchargé par le template.

💡 Espace. Un disque de « 200 Go » en contient environ 186 réels. Avec tout installé, il reste environ 20 Go pour les vidéos : si les téléchargements s'arrêtent sans erreur, c'est qu'il est plein. Le fichier wan2.1_t2v_14B_bf16.safetensors (27 Go, Wan à partir de texte) ne sert à rien : on peut le supprimer.

Les deux autres choses qu'InfiniteTalk réclame (un lien de dossier et un patch pour la bibliothèque transformers 5), orchestrate.sh les fait tout seul à chaque nouveau pod, parce qu'elles se trouvent sur le disque du conteneur et disparaissent quand le pod est supprimé.

Étape 4 — Les scripts sur votre PC

Téléchargez-les dans un dossier, tous ensemble (ils se cherchent entre eux) :

Depuis le terminal :

mkdir -p ~/video-tools && cd ~/video-tools
for f in lib_video.sh orchestrate.sh gen_video.py fix_wav2vec_tf5.py monta_video.sh monta_short.sh clip.tsv.esempio montaggio.tsv.esempio chiusura.txt.esempio; do
  curl -fsSLO "https://app.roylead.com/supporto/video-tools/$f"
done
chmod +x *.sh

Il vous faut aussi ffmpeg (avec libx264 et libass), ffprobe, python3, curl, ssh.

On ne modifie pas les scripts : ils lisent tout dans des fichiers de données placés dans le dossier de la vidéo.

Étape 5 — Le dossier d'une vidéo

ma-video/
  clip.tsv                 les travaux : nom, type (it = parlé, wan = scène muette), image, réplique ou images de départ, prompt
  immagini/                les images de départ (une par plan, générées avec ChatGPT à partir des photos du produit)
  audio/battute/           les répliques en mp3, une par clip parlé
  montaggio.tsv            l'ordre des clips dans la vidéo, avec le mp3 à mettre sous les scènes muettes
  montaggio/sottotitoli.ass  les sous-titres (sur Meta, on regarde sans le son)
  chiusura.txt             3 lignes : offre, ligne 2, ligne 3 (facultatif)
  prodotto.png             photo du produit pour la clôture (facultatif, va avec chiusura.txt)

Les voix se font avec ElevenLabs, un texte entier par personnage avec [long pause] entre les répliques, puis on coupe sur les pauses en un mp3 par réplique (ffmpeg -af silencedetect). Si vous utilisez le playbook du lancement avec Claude Code, c'est lui qui prépare le scénario, clip.tsv, montaggio.tsv, les sous-titres et les coupes des voix.

Étape 6 — Générer et monter

# allumez le pod, prenez pod_id et l'utilisateur ssh dans "Connect", puis :
nohup ./orchestrate.sh <pod_id> <utilisateur_ssh> ~/ma-video > ~/ma-video/orchestrate.log 2>&1 &
tail -f ~/ma-video/orchestrate.log        # READY, MODELS, UPLOADED, puis un DONE par clip, ALL_DONE

Les clips arrivent dans ma-video/clip/. Les mains qui tiennent des objets ratent souvent : comptez 2-3 essais par scène (changez la graine en relançant, ou le prompt). Temps mesurés sur la RTX PRO 6000 : premier clip 5-7 minutes (il charge les modèles), puis 1-4 minutes chacun.

./monta_video.sh ~/ma-video      # → ma-video/video-finale.mp4 (1080x1920, 30 fps, -16 LUFS)
./monta_short.sh ~/ma-video      # → ma-video/short-<nom>.mp4, un par clip, avec le graphisme par-dessus

monta_video.sh s'arrête tout seul si la voix a des trous de plus de 1,5 seconde : mieux vaut une erreur maintenant qu'une vidéo muette en ligne. Le fichier final est écrit sur le disque système puis copié : sur un disque Windows monté dans WSL, la fusion peut s'arrêter avec « No space left on device ».

Ensuite, supprimez le pod.

Pièges déjà rencontrés

  • ComfyUI répond 403 (erreur 1010) aux appels sans User-Agent de navigateur : les scripts en envoient un ; si vous utilisez curl à la main, ajoutez -A "Mozilla/5.0".
  • SSH direct refusé : on passe par le proxy ssh.runpod.io avec -tt et les commandes sur stdin (c'est ce que fait lib_video.sh).
  • ComfyUI ne démarre pas sur certaines machines Community (502 permanent, dans le log « could not bind on any address ») : la machine n'a pas d'IPv6. orchestrate.sh le relance tout seul sur 0.0.0.0.
  • Mémoire insuffisante avec la RTX 5090 : 62 Go de RAM ne suffisent pas pour deux modèles complets de 28 Go. Soit un GPU avec plus de RAM, soit les versions fp8_scaled des modèles.
  • GPU non disponible au moment de la création : la solution de repli qui a marché, une RTX PRO 6000 Max-Q en Community sans disque réseau, avec download_wan22=true (retéléchargement en 8 minutes).
  • ComfyUI meurt et le template ne le relance pas : orchestrate.sh le relance ; à la main : python3 /ComfyUI/main.py --listen 0.0.0.0 --use-sage-attention --extra-model-paths-config /ComfyUI/extra_model_paths.yaml.

Règles Meta pour les vidéos faites avec l'IA

  • Dans Ads Manager, il faut déclarer que le contenu est généré avec de l'IA.
  • Le personnage se présente comme porte-parole, jamais comme « vrai client » : Meta considère cela comme trompeur.
  • Toujours des sous-titres : la plupart des gens regardent sans le son.

Prêt à passer à la pratique ?

Crée ton compte RoyLead et démarre en quelques minutes.

Commencer gratuitement