← Retour aux guides

Vidéos publicitaires avec RunPod

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 21 septembre 2026


💡 Recommandée si vous utilisez Claude Code. Le terminal, ssh et ffmpeg, c'est Claude qui s'en sert à votre place : il vous faut seulement un compte RunPod avec une carte enregistrée et l'installation ci-dessous, une fois. Vous payez le GPU à l'heure plutôt qu'au clip, ce qui devient rentable avec plusieurs vidéos d'affilée. Si vous travaillez dans un chat (claude.ai, ChatGPT, Claude Desktop), qui ne peut pas utiliser de terminal, prenez fal.ai : mêmes modèles, paiement au clip, rien à installer.

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 (facultatif, déconseillé)14 $ par mois pour 200 Go, en permanence
Une scène muette ou un clip parlé sur la PRO 6000environ 2 minutes, environ 0,07 $
Une vidéo de 8 scènes (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. Sans disque, il ne reste rien à payer.

É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. Le disque réseau est facultatif, et souvent il vaut mieux s'en passer. Un Network Volume de 200 Go garde les modèles (environ 176 Go) et vous évite de les retélécharger, mais il coûte 14 $ par mois et surtout il vous enchaîne à son centre de données : le pod y naît forcément, et si le bon GPU n'y est pas, vous êtes bloqué. Sans disque, le template télécharge lui-même les modèles au démarrage : avec download_wan22=true (scènes muettes) et download_wan21=true (clips parlés), cela prend 1 à 3 minutes, quelques centimes. Les fichiers InfiniteTalk, en revanche, le template ne les télécharge pas : s'il vous faut des clips parlés, ajoutez-les comme à l'étape 3 (quelques minutes). Ainsi vous prenez le GPU dans n'importe quel centre de données où il y en a. Vérifié le 2026-09-21 sur un pod sans disque : scènes muettes, clips parlés et images. Le disque n'est rentable que si vous générez tous les jours ou si vous avez vos propres modèles : dans ce cas, placez-le là où la RTX PRO 6000 est le plus souvent disponible, jamais dans un centre de données qui n'a que des GPU de 32 Go.

Étape 2 — Le pod

💡 Laissez Claude le gérer. Si vous connectez votre compte RunPod à Claude Code, Claude crée le pod, l'arrête dès que les clips sont téléchargés et le supprime (seulement avec votre confirmation) tout seul : plus de pod oublié allumé. La connexion officielle de RunPod, depuis le terminal, avec votre clé API RunPod (Settings → API Keys) : claude mcp add --transport http runpod -s user https://mcp.getrunpod.io/ --header "Authorization: Bearer <votre clé API>", puis /mcp dans Claude Code pour recharger. Instructions complètes et alternatives : github.com/runpod/runpod-mcp. Sans la connexion, vous créez le pod vous-même comme ci-dessous.

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.
  • Le GPU doit être un Blackwell, pas une carte plus ancienne. Si la PRO 6000 n'est pas disponible, repliez-vous sur un autre Blackwell du même centre de données (la RTX PRO 4500 de 32 Go coûte 0,72 $ l'heure, mais ne tient que les scènes muettes : les clips parlés manquent de mémoire même à 7 secondes). Sur les architectures précédentes — A100, 4090, 5090 — les scènes muettes avec Wan sortent très bien, mais InfiniteTalk produit une image puis du noir : le modèle parlé part en NaN sans aucune erreur, ni dans le log de ComfyUI ni dans orchestrate.sh, qui écrit DONE et télécharge un clip noir. On ne s'en aperçoit qu'en ouvrant le fichier.
  • Disque : aucun (recommandé). Si vous avez un network volume, montez-le sur /workspace.
  • Variables du template : sans disque, à chaque pod, download_wan22=true (scènes muettes) et download_wan21=true (clips parlés) : 1 à 3 minutes. Avec un disque, true seulement la première fois, puis false : les modèles sont déjà là 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)

Un seul visage par clip. InfiniteTalk fait bouger la bouche de tous les visages présents dans l'image, avec le même audio — y compris ceux de l'arrière-plan et ceux reflétés dans un miroir. Deux personnes à l'image deviennent deux personnes qui disent la même phrase ensemble. Les scènes de dialogue se coupent en deux clips, un par réplique, et celui qui ne parle pas reste de dos, flou ou hors cadre.

Le template (v29) ne télécharge pas ces fichiers : vérifiez avec ls /workspace/ComfyUI/models/diffusion_models | grep -i infinitetalk, et s'ils manquent, ajoutez-les dans /workspace/ComfyUI/models/ (depuis Hugging Face ; sans disque, à chaque nouveau pod) :

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). Attention à l'endroit où se trouve le disque réseau : le pod naît forcément dans son centre de données, et la PRO 6000 peut y être absente même si le catalogue l'annonce ailleurs.
  • Clips parlés noirs (une image puis le noir, l'audio est là) : le GPU n'est pas un Blackwell. C'est arrivé sur un A100 80 Go, sans la moindre erreur dans les logs — orchestrate.sh écrit DONE et télécharge un clip noir. Avant le montage, vérifiez que les clips parlés ne sont pas noirs : ffmpeg -i clip/shot-01.mp4 -vf "signalstats,metadata=print:key=lavfi.signalstats.YAVG" -f null - — si après la première image YAVG reste autour de 16, ils sont noirs. On les régénère sur un Blackwell en réécrivant clip.tsv avec les seules lignes it : les scènes déjà téléchargées ne bougent pas.
  • La clé SSH doit être enregistrée sur le compte (Settings → SSH Public Keys) avant de créer le pod : les clés ajoutées ensuite n'entrent pas dans les pods déjà allumés, et le proxy répond Permission denied (publickey). Sans SSH, orchestrate.sh n'échoue pas tout de suite : il va jusqu'à un PATCH output: vide et s'arrête là.
  • 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 ↗