Que fait fullgrade ?
Correction automatique et douce de la couleur pour la vidéo. Tout fonctionne en local avec ffmpeg + Python ; pas de GPU, ni d'API cloud, presque aucun token (l'analyse est faite par le script, pas en regardant les images).
Langue : répondre dans la langue de l'utilisateur. Si l'utilisateur écrit en chinois, passer --lang zh pour que le rapport et les images de comparaison soient en chinois ; sinon --lang en.
1. Environnement (première exécution, ou en cas d'échec)
python3 <skill_dir>/scripts/fullgrade.py --check
Si quelque chose manque, indiquer à l'utilisateur la commande nécessaire :
| Manquant | macOS | Windows | Linux |
|---|---|---|---|
| ffmpeg | brew install ffmpeg | winget install ffmpeg | sudo apt install ffmpeg |
| numpy / Pillow | python3 -m pip install numpy pillow (ajouter --break-system-packages si pip refuse) | ||
| recadrage intelligent (optionnel) | python3 -m pip install opencv-python-headless |
Exécuter le script sur la machine où se trouvent les vidéos. Si les fichiers ont été chargés dans un sandbox, l'exécuter là-bas et renvoyer les sorties.
Sous Windows, utiliser python au lieu de python3 si python3 n'est pas trouvé.
Optionnel : python3 <skill_dir>/scripts/fullgrade.py --selftest construit des séquences synthétiques et vérifie chaque fonctionnalité (environ 2–3 minutes). L'utiliser si l'utilisateur demande « est-ce que ça marche sur mon ordinateur ? ».
2. Transformer la demande en une commande
python3 <skill_dir>/scripts/fullgrade.py <fichiers-ou-dossiers> [options] --lang <en|zh>
| L'utilisateur dit… | Option |
|---|---|
| rien sur le style / « corrige juste » / 自然 | --preset natural (défaut) |
| immobilier, intérieur, lumineux et aéré / 房产, 明亮通透 | --preset real-estate |
| chaleureux, cosy, soirée / 温暖, 温馨 | --preset warm |
| vif, alimentaire, produit / 鲜艳, 美食 | --preset vivid |
| propre, froid, moderne, tech / 清冷, 现代 | --preset cool-modern |
| cinématographique, look film, vlog / 电影感 | --preset cinematic |
| vertical, TikTok, Reels, Shorts, 抖音, 小红书 | --ratio 9:16 |
| YouTube, paysage / 横屏 | --ratio 16:9 |
| carré / flux Instagram | --ratio 1:1 ou --ratio 4:5 |
| remplir le cadre, sans barres / 裁切 | --fit crop |
| garder toute l'image / 不要裁, 补边 | --fit blur |
| barres noires / blanches | --fit color --pad-color black (ou white) |
| drone / DJI D-Log | --log dlog |
| Sony S-Log3 · Panasonic V-Log · iPhone Apple Log | --log slog3 · --log vlog · --log applelog |
| tout faire correspondre à ce clip / photo | --match <file> (--match-method mkl par défaut ; reinhard, hist) |
| faire correspondre tous les clips entre eux étroitement | --match hero |
| touche plus légère / ne pas en faire trop / 轻一点 | --strength 0.6 |
| export plus rapide | --fast (encodeur matériel Apple / NVIDIA / Intel, repli automatique) |
| meilleure qualité | --quality best |
| inclure les sous-dossiers | --recursive |
| seulement vérifier, sans exporter | --analyze-only |
| un seul réglage pour tout le fichier | --no-split |
| fichiers LUT pour Premiere / DaVinci / Final Cut / CapCut | pointer vers <skill_dir>/luts/ (ou --export-luts <dossier>) |
Valeurs par défaut déjà adaptées pour la plupart des gens : --fit auto (recadre si cela conserve ≥60% de l'image, sinon fond flou — donc 16:9 ↔ 9:16 utilise un fond flou sauf si l'utilisateur demande le recadrage), --dynamic auto, --denoise auto.
Ne pas demander le rapport hauteur/largeur sauf si l'utilisateur le mentionne — conserver l'original. Demander uniquement lorsque la demande est vraiment peu claire (par exemple, ils disent « LOG » mais pas quelle caméra).
3. Ce qui se passe (expliquer brièvement uniquement si demandé)
- iPhone HDR → SDR automatiquement ; LOG décodé quand
--logest donné (le script prévient lorsqu'un clip ressemble à du LOG). - Un montage final est découpé en plans (détection de scène) ; chaque plan est étalonné individuellement.
- Par plan : balance des blancs → niveaux noir/blanc (hautes lumières protégées) → exposition dans une bande de confort → contraste → saturation → préréglage d'ambiance → correspondance optionnelle. Intégré dans une LUT 3D par plan avec des limites de sécurité, pour ne jamais exagérer.
- La luminosité qui dérive à l'intérieur d'un plan (marcher d'un couloir sombre à une pièce lumineuse) est lissée (exposition dynamique). Les plans fortement éclaircis reçoivent un léger débruitage.
- Le recadrage n'étire jamais ; le recadrage intelligent suit les visages (si OpenCV est installé) ou la zone la plus détaillée.
- Un clip qui semble déjà correct est copié sans ré-encodage.
Vitesse : le traitement prend environ 1–3× la durée de la vidéo pour du 1080p (4K prend plus de temps). Pour les fichiers longs ou nombreux, dire à l'utilisateur que c'est en cours et attendre ; ne pas annuler. Utiliser --fast s'ils sont pressés.
Code de sortie : 0 = tout est fait · 2 = certains fichiers ont échoué (les autres sont OK — la fin de la sortie liste Fait : X OK, Y échoué et le rapport montre pourquoi) · 1 = rien n'a pu être traité. Toujours dire à l'utilisateur quels fichiers ont échoué et pourquoi (causes courantes : pas une vidéo, fichier endommagé, fichier audio uniquement).
4. Sorties
- Vidéos :
<dossier d'entrée>/_graded/<nom>_<préréglage>[_9x16].mp4— jamais écrasé (ajoute_v2), originaux intacts. _graded/compare/*_compare.jpg— images avant/après. Toujours en montrer au moins une à l'utilisateur._graded/fullgrade_report.html— curseurs avant/après, chiffres et oscilloscopes pour chaque plan. Le proposer._graded/fullgrade_report.md— les mêmes chiffres en texte ; le lire pour écrire votre résumé.
5. Réponse
Bref résumé dans la langue de l'utilisateur : combien de vidéos, quel préréglage/ratio, où sont les fichiers, une ou deux phrases sur ce qui a changé (d'après le rapport, par ex. « le plan 2 était très jaune et est maintenant neutre ; les hautes lumières de la fenêtre ont été protégées »), l'image/les images de comparaison, et une prochaine étape utile (un autre préréglage, une version 9:16, --strength s'ils veulent plus léger).
Limites honnêtes
- Les fenêtres/ciels complètement blancs brûlés ne peuvent pas être récupérés ; le reste de l'image est quand même amélioré.
- Les séquences très sombres montrent du bruit lorsqu'elles sont éclaircies (un léger débruitage aide, ce n'est pas magique).
- La lumière mixte dans un même plan (lampe orange + lumière du jour bleue) est équilibrée en compromis.
- Les fondus entre deux plans très différents peuvent montrer un petit saut au niveau de la coupe.
- Le D-Log M de DJI et d'autres courbes LOG non listées ne sont pas supportés en V1 — les étalonner sans
--loget utiliser--strength.