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),
sshetffmpeg, 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
| Poste | Coût |
|---|---|
| GPU RTX PRO 6000 (96 Go), Secure Cloud | 2,09 $ de l'heure, seulement quand il est allumé |
| GPU RTX 5090 Community | 0,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èles | 14 $ 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 essais | environ 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
- Créez le compte sur runpod.io et chargez du crédit.
- 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éfinissezRUNPOD_SSH_KEY=/chemin/de/la/cleavant de les lancer. - 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=trueetdownload_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) :
| Dossier | Fichier | Dépôt |
|---|---|---|
diffusion_models | Wan2_1-InfiniTetalk-Single_fp16.safetensors | Kijai/WanVideo_comfy (dossier InfiniteTalk) |
wav2vec2 | wav2vec2-chinese-base_fp16.safetensors | Kijai/wav2vec2_safetensors |
text_encoders | umt5-xxl-enc-bf16.safetensors | Kijai/WanVideo_comfy |
vae | Wan2_1_VAE_bf16.safetensors | Kijai/WanVideo_comfy |
loras | lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors | Kijai/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) :
- lib_video.sh ↗ — les contrôles partagés
- orchestrate.sh ↗ — génère les clips sur le pod
- gen_video.py ↗ — un clip (utilisé par orchestrate)
- fix_wav2vec_tf5.py ↗ — le patch pour InfiniteTalk (appliqué par orchestrate)
- monta_video.sh ↗ — monte la vidéo parlée
- monta_short.sh ↗ — monte les shorts sans voix
- exemples : clip.tsv.esempio ↗, montaggio.tsv.esempio ↗, chiusura.txt.esempio ↗
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.ioavec-ttet les commandes sur stdin (c'est ce que faitlib_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.shle relance tout seul sur0.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_scaleddes 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.shle 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.