Communitygithub.com

dung-video

Configurer un ordinateur pour monter des vidéos YouTube avec Claude Code et réaliser des montages basiques avec l'outil gratuit ffmpeg – vérifier et installer ffmpeg/Python, créer un dossier de projet bien organisé, couper, assembler, créer une version verticale 9:16 pour les Shorts, ajouter des sous-titres vietnamiens (.srt) avec Whisper, égaliser le volume, exporter avec les paramètres recommandés par YouTube, et extraire une image miniature.

Qu'est-ce que dung-video ?

Cette compétence permet à un créateur YouTube débutant de monter des vidéos directement sur son ordinateur en utilisant **ffmpeg** (gratuit) et **Claude Code**. Elle est particulièrement adaptée aux utilisateurs vietnamiens, mais reste accessible à tous. Le processus commence par la vérification et l'installation de ffmpeg et Python (avec l'accord de l'utilisateur), puis la création d'une structure de projet claire (dossiers `raw/` et `exports/`). Les montages de base sont réalisés via des commandes ffmpeg prêtes à l'emploi : coupe, assemblage de clips, création de versions verticales pour Shorts (avec rognage centré ou fond flou), ajout de sous-titres vietnamiens via Whisper (exécuté localement pour la confidentialité), normalisation du volume audio (cible -14 LUFS), export aux normes YouTube (H.264, AAC, GOP adapté) et extraction d'images miniatures. La compétence impose des règles strictes : ne jamais modifier ou supprimer les fichiers originaux de l'utilisateur, demander la permission avant toute installation, afficher la commande avant de l'exécuter, et vérifier le fichier avec ffprobe au préalable. En cas d'erreur, la compétence explique le problème en termes simples et propose une correction.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thegentleminh/thegentleminh-skills/tree/HEAD/plugins/dung-video/skills/dung-video

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Dựng vidéo cơ bản (montage vidéo basique avec ffmpeg)

Vous aidez un créateur YouTube débutant à monter des vidéos sur son propre ordinateur avec ffmpeg (gratuit). De nombreux utilisateurs sont vietnamiens : si l'utilisateur écrit en vietnamien, répondez dans un vietnamien courant et parlé, et gardez les termes techniques simples (dites ce que fait une commande, pas comment elle fonctionne).

Prérequis et limites

Dites-le à l'utilisateur avant d'installer quoi que ce soit, et à chaque fois qu'une demande nécessite quelque chose qui manque.

  • Nécessite : un abonnement Claude payant avec Claude Code ; ffmpeg (gratuit, installé uniquement avec l'accord de l'utilisateur). Sous-titres uniquement : Python 3.10+ et le package faster-whisper (quelques centaines de Mo, téléchargé une fois).
  • GPU : pas nécessaire. Whisper s'exécute sur le CPU en l'absence de carte NVIDIA, donc les sous-titres pour une longue vidéo sont lents.
  • OS testé : Windows 10 (vérification de configuration dans l'application de bureau Claude, et chaque commande de coupe/assemblage/vertical/volume/export). macOS : pas encore testé.
  • Limites : les sous-titres automatiques se trompent sur les noms, les chiffres et les accents régionaux, donc l'utilisateur doit relire le fichier .srt. Montages basiques uniquement : pas d'effets, de texte animé ou de musique.
  • Ce qui fonctionne sans : sans Python/faster-whisper, tout sauf les sous-titres fonctionne quand même.

Règles (toujours)

  1. Ne jamais modifier ou supprimer les fichiers originaux de l'utilisateur. Lire depuis raw/ (ou là où se trouve le fichier de l'utilisateur) ; écrire chaque résultat dans exports/ avec un nouveau nom (par exemple exports/clip-cat.mp4). Ne jamais écraser un fichier existant : ajouter -n à ffmpeg, ou choisir un nouveau nom.
  2. Demander avant d'installer quoi que ce soit. Dire ce que c'est, pourquoi c'est nécessaire, et la commande exacte, puis attendre un oui.
  3. Afficher la commande avant de l'exécuter et dire en une phrase ce qu'elle va faire. Pour tout ce qui prend plus d'une minute (longues vidéos, sous-titres), le dire d'abord.
  4. Vérifier le fichier avant de le modifier avec ffprobe (taille, fréquence d'images, durée, audio) pour que la commande soit adaptée au fichier.
  5. Mettre les chemins de fichiers entre guillemets (ils contiennent souvent des espaces et des lettres vietnamiennes). Sur Windows, préférer les slashes dans les chemins de filtres ffmpeg.
  6. Après chaque modification, dire à l'utilisateur où se trouve le nouveau fichier et quoi vérifier (le lire, écouter le début et la fin).
  7. Ne pas prétendre connaître des règles YouTube que vous ne pouvez pas citer. Là où cette compétence cite YouTube, la source est liée.

1. Vérifier l'ordinateur

Exécuter, une par une :

  • ffmpeg -version et ffprobe -version
  • python --version (sur macOS, essayer aussi python3 --version) - nécessaire uniquement pour les sous-titres.

Si ffmpeg est manquant, proposer de l'installer (demander d'abord) :

  • Windows : winget install --id Gyan.FFmpeg -e
  • macOS (Homebrew) : brew install ffmpeg (si brew lui-même est manquant, diriger l'utilisateur vers https://brew.sh et s'arrêter).

Si Python est manquant et que l'utilisateur veut des sous-titres :

  • Windows : winget install --id Python.Python.3.12 -e
  • macOS : brew install python

Après l'installation, l'utilisateur doit peut-être ouvrir un nouveau terminal (ou redémarrer Claude Code) avant que la commande soit trouvée. Vérifier à nouveau avec ffmpeg -version.

2. Configurer un dossier de projet

Créer, dans le dossier où Claude Code a été ouvert :

raw/        originaux (copier les vidéos ici ; jamais modifiés)
exports/    chaque fichier final ou intermédiaire
CLAUDE.md   notes sur la chaîne, lues par Claude Code au début de chaque session

Si CLAUDE.md n'existe pas, proposer de le créer et poser à l'utilisateur 4 questions courtes : sujet de la chaîne, langue des vidéos, Shorts / vidéos longues / les deux, caméra habituelle (téléphone ou caméra). Écrire un fichier court comme :

# Ma chaîne
- Sujet : ...
- Langue des vidéos : vietnamien
- Faire : vidéos longues et Shorts
- Tourner avec : téléphone
- Originaux dans raw/, fichiers finis dans exports/

3. Montages basiques

Toujours vérifier l'entrée d'abord : ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate:format=duration -of default=nw=1 "raw/input.mp4"

Couper (cắt một đoạn)

Ré-encoder pour que la coupe tombe exactement au moment demandé :

ffmpeg -n -ss 00:00:12 -to 00:01:30 -i "raw/input.mp4" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-cat.mp4"

Les temps peuvent être en mm:ss ou hh:mm:ss. Plusieurs morceaux = plusieurs coupes, puis assembler.

Assembler (ghép nhiều clip)

  1. Vérifier chaque clip avec ffprobe. S'ils ont tous la même largeur, hauteur et fréquence d'images, écrire exports/list.txt :
    file '../raw/clip1.mp4'
    file '../raw/clip2.mp4'
    
    puis : ffmpeg -n -f concat -safe 0 -i "exports/list.txt" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"
  2. S'ils diffèrent, redimensionner et remplir chaque clip à la même taille et fréquence d'images en une seule étape (exemple pour 2 clips vers 1920x1080, 30 ips) :
    ffmpeg -n -i "raw/a.mp4" -i "raw/b.mp4" -filter_complex "[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v0];[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=30[v1];[0:a]aresample=48000[a0];[1:a]aresample=48000[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/ghep.mp4"
    
    Si un clip n'a pas de piste audio, le dire à l'utilisateur et ajouter du silence à sa place (anullsrc) au lieu d'échouer.

Version verticale pour Shorts (khung dọc)

YouTube considère une vidéo comme un Short si elle est carrée ou verticale et d'une durée maximale de 3 minutes, téléchargée jusqu'à 1080p (Aide YouTube 15424877, 10059070). La taille verticale habituelle est 1080x1920 (9:16) ; YouTube ne publie pas de taille exacte en pixels.

  • Rogner le centre (bon quand la personne est au milieu) : ffmpeg -n -i "raw/input.mp4" -vf "crop=ih*9/16:ih,scale=1080:1920,setsar=1" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4"
  • Garder toute l'image sur un fond flou (bon pour les captures d'écran ou les plans larges) : ffmpeg -n -i "raw/input.mp4" -filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:2[bg];[0:v]scale=1080:-2[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,setsar=1[v]" -map "[v]" -map 0:a? -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a aac -b:a 192k "exports/input-doc.mp4" Demander lequel l'utilisateur veut ; si le sujet est décentré, proposer de déplacer le rognage (crop=ih*9/16:ih:X:0, X = bord gauche en pixels).

Sous-titres vietnamiens (phụ đề)

Utilise Whisper sur le propre ordinateur de l'utilisateur (gratuit, rien n'est téléchargé). Nécessite Python et le package faster-whisper (environ quelques centaines de Mo avec le modèle ; demander d'abord) : python -m pip install faster-whisper Puis exécuter le script fourni avec cette compétence (chemin : le dossier scripts à côté de ce SKILL.md) : python "<dossier de la compétence>/scripts/phu_de.py" "raw/input.mp4" --lang vi --out "exports/input.srt" Il écrit un fichier .srt. Dire à l'utilisateur que Whisper fait des erreurs (noms, chiffres, accents) : il doit ouvrir le .srt et le corriger avant de l'utiliser. La première exécution télécharge le modèle et est lente. Pour intégrer les sous-titres dans l'image (incrustation), après que l'utilisateur a corrigé le .srt : ffmpeg -n -i "raw/input.mp4" -vf "subtitles=exports/input.srt:force_style='FontSize=18,Outline=2'" -c:v libx264 -crf 18 -preset medium -pix_fmt yuv420p -c:a copy "exports/input-phude.mp4" (Sur Windows, garder le chemin du .srt relatif et avec des slashes ; une lettre de lecteur comme C: doit être écrite C\: à l'intérieur du filtre.) De nombreux créateurs téléchargent le .srt dans YouTube Studio au lieu de l'incruster, afin que les spectateurs puissent le désactiver.

Égaliser le volume (chuẩn âm lượng)

YouTube ne publie pas de cible de volume sonore ; du côté des spectateurs, il a un réglage "Volume stable" qui égalise les parties fortes et douces (Aide YouTube 14106294). Un choix courant pour la vidéo en ligne est d'environ -14 LUFS ; dire que c'est un choix courant, pas une règle YouTube. Utiliser le filtre loudnorm de ffmpeg en deux passes (docs ffmpeg) :

  1. Mesurer : ffmpeg -hide_banner -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - Lire input_i, input_tp, input_lra, input_thresh depuis le JSON à la fin.
  2. Appliquer avec ces nombres : ffmpeg -n -i "exports/video.mp4" -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:linear=true,aresample=48000 -c:v copy -c:a aac -b:a 192k "exports/video-am-luong.mp4" Ne pas utiliser une seule passe sur une vidéo finie : cela continue d'ajuster le volume pendant la vidéo.

Exporter pour YouTube (xuất file)

Suit les paramètres de codage recommandés par YouTube pour le téléchargement (Aide YouTube 1722171) : MP4 avec démarrage rapide, profil H.264 High, progressif, 4:2:0, GOP fermé de la moitié de la fréquence d'images, 2 images B ; audio AAC-LC à 48 kHz ; couleur BT.709 ; même fréquence d'images que l'enregistrement. Débits binaires vidéo recommandés pour SDR : 1080p 8 Mbps (24-30 ips) ou 12 Mbps (48-60 ips) ; 720p 5 / 7,5 Mbps ; 1440p 16 / 24 ; 4K 35-45 / 53-68. Audio : stéréo 384 kbps (mono 128 kbps). Exemple pour une vidéo 1080p, 30 ips (GOP 15) :

ffmpeg -n -i "exports/video.mp4" -c:v libx264 -profile:v high -pix_fmt yuv420p -b:v 8M -bf 2 -g 15 -flags +cgop -x264-params "colorprim=bt709:transfer=bt709:colormatrix=bt709" -color_range tv -c:a aac -b:a 384k -ar 48000 -movflags +faststart "exports/video-youtube.mp4"

Ajuster -b:v et -g (la moitié de la fréquence d'images) à la vidéo ; pour 60 ips utiliser -b:v 12M -g 30. Garder la fréquence d'images à laquelle la vidéo a été enregistrée (ne pas ajouter -r).

Image miniature (lấy khung hình)

ffmpeg -n -ss 00:00:42 -i "raw/input.mp4" -frames:v 1 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -q:v 2 "exports/khung-0042.jpg" Proposer 3-4 images à des moments différents pour que l'utilisateur puisse choisir. Les règles de YouTube pour les miniatures (taille, 16:9, JPG/PNG, taille de fichier) sont dans Aide YouTube 72431.

En cas de problème

Cette compétence a été écrite avec Claude Code, elle peut donc contenir des bugs, et chaque ordinateur est différent. Lorsqu'une étape échoue, ou que l'utilisateur dit que la compétence a fait quelque chose de mal :

  1. Expliquer clairement, en vietnamien : ce qui a échoué et pourquoi, en une ou deux phrases. Pas de traces de pile brutes sauf si l'utilisateur le demande.
  2. Lire cette compétence et la commande qui a été exécutée. Trouver la cause (la liste ci-dessous couvre les plus courantes).
  3. Corriger et ré-exécuter, en écrivant un nouveau fichier dans exports/. Ne jamais toucher ou écraser les originaux de l'utilisateur, même en corrigeant.
  4. Si la cause se trouve dans cette compétence elle-même (une commande erronée ou une étape manquante), le dire et suggérer de le signaler pour que cela soit corrigé pour tout le monde : https://github.com/thegentleminh/thegentleminh-skills/issues

Échecs courants

  • 'ffmpeg' n'est pas reconnu / command not found : ffmpeg n'est pas installé ou le terminal a été ouvert avant l'installation ; ouvrir un nouveau terminal et vérifier à nouveau.
  • Aucun fichier ou dossier de ce type : vérifier le chemin et les guillemets ; lister le dossier pour trouver le nom exact.
  • existe déjà. Sortie. : le nom de sortie est pris ; choisir un nouveau nom (ne jamais écraser).
  • Codeur inconnu 'libx264' : la build de ffmpeg ne l'inclut pas ; réinstaller avec les commandes ci-dessus.
  • Audio désynchronisé après une coupe : ré-exécuter la coupe avec ré-encodage (les commandes ci-dessus ré-encodent déjà).

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

anh-thanh-video

Turn photos into a video - a beat-synced photo edit (photos change on the beat with flash, pop, shake and snap-and-ease camera moves, like the "2 ảnh / 3 ảnh" templates but with any song the user owns and any number of photos), a gentle photo album (slow push toward faces, soft crossfades, title and captions), or a 2.5D "3D zoom" where near things move more than far things. Faces stay in frame, Vietnamese text done right, 9:16 / 16:9 / 1:1 / 4:5. Use for "biến ảnh thành video", "ghép ảnh thành video", "video ảnh theo nhạc", "photo slideshow", "mẫu capcut nhiều ảnh", "video kỷ niệm", "album ảnh cưới/gia đình", "ảnh 3D", product photo videos.

tach-nguoi

Person cut-out effects on your own clip - big text BEHIND the person (chữ sau lưng người), a freeze-frame character intro with a name card, freeze snap / comic freeze, and clones (phân thân, one take or two). Vietnamese text done right, placed automatically so it stays readable, inside each app's safe area, 9:16 or 16:9. Use when the user wants "text behind me", "chữ sau lưng", "chữ xuyên người", "giới thiệu nhân vật", "dừng hình", "freeze frame", "phân thân", "clone", or other cut-out effects on their own video.

video-giai-thich

Make a Vietnamese animated explainer video (9:16, TikTok / Reels / Shorts) from a topic or a question - "vì sao bầu trời màu xanh?", "lãi kép là gì?" - with a spoken-Vietnamese script, a voice (ElevenLabs, your own recording, or none), on-screen words that appear as they are spoken, and pictures animated in code and timed to the words. Five looks (riso print, chalkboard, newsprint, blueprint, poster). Use for "làm video giải thích", "video kiến thức", "video khoa học", "giải thích bằng hoạt hình", "explainer video in Vietnamese", "vibe coding animation", "video kiểu Vibe知识".

Skills associés