Créer un projet film (wunder-media)
Pipeline éprouvé des projets Projet-A → Projet-C → Projet-B. Toujours suivre ce déroulement, ne pas réinventer. Dossier de travail par projet : C:\claude\resolve-prep\<nom_court>\.
À lire en premier (dans cet ordre)
references/ablauf.md— les 8 étapes des données brutes au montage multicam finalisé avec titres. Les « décisions » auparavant ouvertes sont désormais répondues en haut dans Autorisations & réponses permanentes — ne pas redemander.references/api-werkzeuge.md— ce que Resolve peut faire par script (rctl.py, grade-set, node-add, Fusion, modèle de titre) et où sont les limites dures de l'API.references/fallstricke.md— pièges appris à grands frais. Avant chaque étape, vérifier brièvement si quelque chose concerne l'étape en cours. Cela évite la plupart des impasses.- ⭐
references/farbgebung.md— quel skill de look est utilisé : le standard estresolve-kino-look-nodekette, le remplacement estresolve-lut-look-kette; les LUTs/outils achetés d'abord ; et la vérification de la caméra (caméscope grand public Rec.709 → émulation film pas du tout ou seulement un très faible %). Lire avant tout étalonnage. Ensuitereferences/kino-look-nodekette.md— la même chaîne sous forme de recette avec toutes les valeurs mesurées et le modèle DRX (chaîne entière en 0,04 s au lieu d'une heure de clics). - ⭐
references/vorbild-projekt.md— le modèle pour les projets multicam : structure des dossiers, état attendu de la médiathèque (y compris le BinAnlegen), le déroulement couleur éprouvé et la limite Claude ↔ Humain. À lire pour chaque projet multicam — décrit précisément l'état jusqu'auquel Claude crée de manière autonome. references/timecode-sync.md— variante de l'étape 2 : caméras fonctionnant avec Atomos AirGlu avec timecode commun → décalages directement à partir des fichiers au lieu de la corrélation croisée. Contient la configuration des appareils (serveur/client, région Europe, le piège « Source accroché sur HDMI ») et la contre-épreuve obligatoirevorlagen/tc_pruefen.py. À lire si les données brutes proviennent de Shogun/Ninja Ultra et portent un timecode.references/grafik-einblendungen.md— étape 9 : intégrer des infographies/overlays et livrer la vidéo (YouTube long + Instagram court). À lire pour les séries de conférences/interviews avec un intervenant récurrent avant de construire les graphiques.vorlagen/— scripts modèles prêts à l'emploi (issus du Projet-B, le plus propre). Copier versC:\claude\resolve-prep\<nom_court>\, ajuster les constantes d'en-tête, exécuter.overlay_tools.pys'exécute directement (check / zoomsafe / mov / place).
Résumé du déroulement
| # | Étape | Outil |
|---|---|---|
| 1 | Examiner les données brutes (ffprobe : caméras, parties, fps, pistes audio, Log/Rec709) | references/ablauf.md |
| 2 | Synchronisation audio avec la piste principale (Tascam/dr10L), décalages en JSON | vorlagen/sync.py |
| 2b | Avec enregistreurs Atomos AirGlu : décalages directement depuis le timecode au lieu de la corrélation croisée — le prouver d'abord avec tc_pruefen.py | references/timecode-sync.md, vorlagen/tc_pruefen.py |
| 3 | Projet + Bins + Import + Timeline source par caméra | vorlagen/prep.py |
| 4 | Transcription (faster-whisper large-v3, CUDA) | vorlagen/transcribe.py |
| 5 | Plan de coupe automatique à partir des pauses de parole (paramètres calmes, voir ci-dessous) | vorlagen/make_cutplan.py |
| 6 | Timeline de montage. Avec ≥2 caméras, TOUJOURS multicam avec coupes — clip multicam par construction DRT, PAS par interface graphique | vorlagen/mcbuild/build_mc_drt.py |
| 6b | Vérification image-son (obligatoire) : la timeline de montage est RACCOURCIE par rapport à la durée audio (passages sautés sans image) - morceler le son, puis mesurer | vorlagen/sync_pruefen.py |
| 7 | Vérifier (trous, chevauchements, angles, rendu image noire), puis étalonnage (skill resolve-kino-look-nodekette, nodes partagés) | vorlagen/verify_cut.py, references/farbgebung.md |
| 8 | Post-traiter : trouver le bon début, enlever l'organisationnel, échanger les angles flous/tremblants ; générique de début (overlay) | references/ablauf.md |
| 8b | Nettoyer + remise : timelines intermédiaires dans le Bin Anlegen, vérifier l'état cible par rapport au modèle | references/vorbild-projekt.md |
| 9 | Incrusations graphiques + livraison (infographies à partir de la transcription, Instagram court 9:16, sous-titres, −14 LUFS) | references/grafik-einblendungen.md, vorlagen/overlay_tools.py, vorlagen/infografik/, vorlagen/verify_overlays.py, vorlagen/instagram_kurz.py |
Prérequis toujours : Resolve en cours d'exécution, Paramètres → Système → Général →
« Scripting externe » = Local. Si scriptapp("Resolve") is None → redémarrer complètement Resolve.
⛔ NE PAS OUBLIER : Le multicam est créé ENTIÈREMENT par script — jamais à la souris
Instruction de l'utilisateur (27.07.2026, explicite) : Cette connaissance ne doit pas être perdue à nouveau,
et elle DOIT être exécutée ainsi, pas autrement. Les versions antérieures de ce skill affirmaient
que le clip multicam « ne se fait qu'à la main dans l'interface graphique ». C'est faux. Il est construit avec
vorlagen/mcbuild/build_mc_drt.py → import_mc2.py → verify_mc.py (vérifié le 27.07.2026,
Resolve 21.0.3 : clip multicam + 21 angles montés sans un seul clic).
Résumé de la procédure (détails dans references/ablauf.md étape 6) :
- Construire une timeline de montage imbriquée (
apply_cut.py) et l'exporter en DRT (Timeline.Export(chemin, 1)). - À partir d'un projet antérieur quelconque avec multicam, exporter un DRT comme modèle.
build_mc_drt.pyinsère dans le nouveau DRT un élément<Sm2MpMulticamClip>+ unSeqContainerde définition (une piste par caméra,UserDefinedName= « Angle N »,MediaRef= DbId de la timeline source) et redirige les clips de coupe vers le multicam.ImportTimelineFromFile→ timeline de montage multicam prête.
⭐⭐ Le seul piège qui fait échouer : L'association Séquence multicam → conteneur
de définition ne se trouve pas dans le XML en clair, mais codée en UTF-16 dans les FieldsBlobs zstd
de MpFolder.xml. Par conséquent, ne jamais générer de nouveaux UUIDs — les DbIds de l'élément multicam,
de la séquence et du conteneur issus du modèle doivent être repris inchangés (Resolve attribue de toute
façon de nouveaux IDs lors de l'importation). Sinon, un clip multicam sans angles apparaît : Frames 0, image noire.
Autorisations & réponses permanentes — NE PLUS REDEMANDER
L'utilisateur a décidé ; Claude l'exécute sans redemander et crée le projet jusqu'au montage multicam finalisé et étalonné avec titres de manière autonome.
Autorisations à prendre immédiatement dès le début (ne pas demander une par une) :
- Activer computer-use tout de suite :
request_access(["DaVinci Resolve"]), motif « Contrôler Resolve (multicam, étalonnage, titres) ». Couvre toute la pipeline ; ne redemander que pour un programme SUPPLÉMENTAIRE. Lancer Resolve si nécessaire viaopen_application. - Les scripts/vérifications se font via Bash +
py C:\claude\resolve-ctl\rctl.py …et les scripts modèles — partie intégrante, simplement exécuter (pas besoin de demander). - Médias hors ligne (projet créé sur un autre disque, p. ex.
E:→F:) ? Relier à nouveau sans redemander :mp.RelinkClips(clips, r"<dossier du projet sur le disque actuel>").
Réponses techniques permanentes (ne plus jamais redemander) :
0. Rythme de montage : légèrement plus calme qu'avant (utilisateur, 27.07.2026). Dans le Projet-A, certaines
coupes arrivaient trop tôt : après une coupe, le spectateur a besoin de quelques secondes pour s'adapter
à la nouvelle image — si un contre-champ court suit immédiatement, l'effet est saccadé. Quelques secondes
de plus par plan suffisent. Valeurs dans make_cutplan.py :
MIN_SHOT 6.0, CUT_MIN 6.0, CUT_MAX 11.0, PARA_GAP 1.2, MAX_STD 50, CALM_GAP 12.0
(pause de calme : après un cutaway, pas de nouveau), division mécanique 55/42/10.
De plus : premier plan toujours caméra principale et pas de cutaways avant le début du contenu
(ANFANG), sinon une coupe tombe juste après le début du film.
- ≥2 caméras → TOUJOURS livrer le multicam monté (véritable clip multicam par construction DRT,
vorlagen/mcbuild/), afin que l'utilisateur puisse basculer chaque clip sur une autre caméra lors de l'édition. Ne plus demander « Nesting ou Multicam ». ⭐⭐ Cela vaut aussi pour TOUTE vidéo dérivée — version courte, extrait, copie de travail, version Instagram (utilisateur, 23.08.2026, explicite) : Elles doivent être de véritables timelines multicam avec les angles du montage principal, sinon l'utilisateur ne peut plus échanger de plan lors du montage fin. ⛔AppendToTimelineavec le clip multicam ne SUFFIT PAS — cela met certes des clips multicam dans la timeline cible, mais tous sur l'Angle 1 ; la sélection d'angle est perdue. L'angle n'est que dans leFieldsBlobdu clip et n'est pas définissable via l'API. Bonne méthode :vorlagen/kurzvideo_drt.py+vorlagen/kurzvideo_import.py(exporter le montage principal en DRT, reprendre les clips des passages souhaités avec FieldsBlob inchangé, recalculerStart/Duration/In, importer ; audio ensuite par passage via l'API sur A1). L'étalonnage vient avec le DRT. 1b. ⭐⭐ Fréquence de lecture = fréquence de la timeline — À DÉFINIR IMMÉDIATEMENT lors de la création (utilisateur, 23.08.2026).proj.SetSetting("timelinePlaybackFrameRate", "<fps>")appartient au même bloc de paramètres quetimelineFrameRate, avant que la première timeline n'existe. Si elle est mal définie (par défaut souvent 24), le son est de mauvaise qualité à la lecture — et dès qu'une timeline existe dans le projet,SetSettingrefuse le changement (False, même au niveau de la timeline). Dans l'interface, c'est encore possible : roue crantée en bas à droite → Paramètres principaux → Format de timeline → taper « Fréquence de lecture » → Enregistrer. La définir lors de la création évite ce détour. - Look — le standard est fixé, NE PAS demander la direction, simplement construire (utilisateur,
18.08.2026). Détails et vérification de la caméra :
references/farbgebung.md.- ⭐ Standard : Skill
resolve-kino-look-nodekette— la chaîne de 4 nodes Émulation film → Balance des blancs+Luminosité (réglable) → LUT de finition (40 %) → Générateur de look film (Halation/Vignette). Transférable complètement par DRX (0,04 s). Nécessite projet en DaVinci YRGB (pas Color Managed). - Remplacement : Skill
resolve-lut-look-kette— même idée sous forme de chaîne pure LUT (Log→ARRI Rec.709 · node réglable · Rec.709→ARRI LogC · Émulation film · Look cinéma). À prendre si les plugins manquent/ne correspondent pas à la caméra, si une série est déjà construite dessus ou si l'utilisateur le souhaite. - Dans les deux chaînes, d'abord les LUTs et outils ACHETÉS ; les versions gratuites seulement si un outil manque ou si la caméra n'a pas de profil dans le plugin.
- ⚠️ Avant de construire, vérifier quelles caméras sont dans le projet. Matériel Log (FS7 II, S-Log3) → chaîne comme prévu. Caméscope grand public Rec.709 (Sony AX100, CX900E et similaires) → Émulation film pas du tout ou seulement un très faible %, sinon les couleurs deviennent artificielles ; obtenir le caractère film via les autres nodes. → Toujours construire la chaîne de nodes, sans redemander. Faire confirmer seulement la luminosité fine.
- ⭐ Standard : Skill
- LUTs UNIQUEMENT pour ces trois étapes de look. Chaque correction (balance des blancs, luminosité, dominante/ magenta/bleu, saturation, contraste) comme valeur de node réglable de Resolve, jamais comme LUT gravée supplémentaire — afin que l'écart par rapport à l'original reste traçable et que les valeurs individuelles soient réversibles.
- ⭐ Contenus de nodes identiques entre caméras = Nodes PARTAGÉS (Shared Nodes) : les nodes de look
identiques (conversion ARRI, stock film, cinéma) comme nodes partagés, afin qu'une modification agisse sur
TOUS les clips/caméras. Seules les corrections spécifiques à la caméra (p. ex. ajustement large→rapproché)
restent locales. Détails dans
references/ablauf.md/fallstricke.md. 4b. ⭐⭐ Node de balance des blancs : UN node partagé par angle — toujours le créer ainsi (utilisateur, 24.08.2026, explicite « merci de mémoriser pour toujours »). Le node réglable 2 (« Balance des blancs + Luminosité ») est créé par angle comme un node partagé qui se trouve sur tous les clips de cet angle — alors une correction modifie l'angle entier d'un coup. Il n'est pas partagé entre angles (chaque angle a ses propres valeurs). Les nodes de look 1/3/4 sont de toute façon partagés. Recette (vérifiée le 24.08.2026 sur Projet-M, 3 angles × 21/22 clips) :- Dans la timeline
… importde l'angle, aller sur un clip de référence (SetCurrentTimeline+SetCurrentTimecode,OpenPage("color")). - Un seul clic en computer-use : Clic droit sur le node 2 → « Enregistrer comme node partagé ». (L'API ne peut pas le faire ; un clic est acceptable.)
- Tout le reste par script :
refItem.CopyGrades(tous_les_autres_clips_de_l_angle)—CopyGradestransfère les nodes partagés comme le même objet, le label devient partout… Shared Node <n>. Cela vaut aussi entre timelines : les copies des timelines d'angle créées lors de l'import DRT des vidéos courtes (… nah import 1…12), les traiter en même temps, sinon les vidéos courtes dépendent d'un ancien étalonnage non repris. - Vérifier : lire les labels des nodes (tous identiques ?) et mesurer une image par angle.
- Faire en même temps : Régler l'interpolation LUT sur tétraédrique — Shift+9 → Color Management → « Look-up-Tables » → « Interpolation 3D-LUT » → Enregistrer (pas de clé API).
- Dans la timeline
4c. ⭐ Supprimer les copies de nodes partagés inutilisées à la fin (utilisateur, 27.08.2026, pour toujours). Chaque application d'une DRX/chaîne de look contenant des nodes partagés crée une nouvelle entrée dans la liste des nodes partagés, au lieu d'utiliser l'existante — en cas d'application clip par clip, donc une copie par clip (Projet-M : 198 entrées, dont seulement 12 utilisées, 186 fiches mortes, toutes octet-identiques). L'image reste correcte, mais la liste devient inutilisable et la base de données du projet grossit.
- Éviter : Appliquer la chaîne une seule fois et utiliser
CopyGradespour la propager (en tant que node partagé, il ne crée pas de copie). - Purger a posteriori :
vorlagen/remove_useless_shared_nodes.py(vérifié 27.08.2026 sur Projet-M : 186 → 12). Doit être exécuté après TOUT import DRT qui a chargé des nodes partagés. Le script compare lenodeIndexde tous les clips du projet avec la liste des nodes partagés, supprime les copies orphelines et rétablit l'ordre. Ne touche pas aux timelines archivées (celles avec(Archiv)ou(Backup)dans le nom de timeline — les conserver, car elles pourraient être nécessaires).
-
Le profil de rendu EXISTE déjà — l'utiliser (profil avec sortie DNxHR HQ 10-bit, pas le recréer). Depuis l'interface (computer-use) ou
ApplyColorGrade/CopyGrades?ApplyColorGraden'existe pas comme fonction de l'API publique (dans la console Workspace → Script → Resolve, cela dépend du nom de l'API).CopyGradesfonctionne, mais transmet tout l'étalonnage d'un clip complet, y compris les nodes partagés et leColorSpaceTransform. Version plus sûre : l'utilisateur applique la DRX une fois par angle, puis le scriptCopyGradesdistribue — voir la recette ci-dessus. -
Pour l'export DRT (étape 6) :
Timeline.Export()exporte vers un dossier ; le fichier s'appelle<NomTimeline>.drt; pour l'import ultérieur,ImportTimelineFromFileattend le chemin complet du fichier. L'API n'a pas de gestion d'erreur détaillée pour les échecs d'export — vérifier manuellement le fichier (existe-t-il ? taille plausible ?).
Questions explicites qui peuvent / doivent être posées :
- Quand une décision technique entre deux options Toutes deux permises n'est pas clarifiée dans les références (p. ex. « Préfères-tu la version A ou B ? »).
- Sélection de l'angle (étape 5) : Le plan de coupe ne contient que les points de montage (entrées/sorties) ; l'attribution réelle de l'angle (quelle caméra sur quel clip) reste une décision éditoriale — le script répartit par défaut avec un ratio de partitions mécanique (55/42/10 %). L'utilisateur PEUT le modifier explicitement (p. ex. « je préfère plus de caméra A, moins de B ») ou laisser la répartition automatique. Ne pas demander à l'avance — la répartition mécanique est le standard. Modifications uniquement sur demande.
- Paramètres de la fenêtre de fusion (étape 8, titres) : Position et police sont basées sur le modèle ; ajustements uniquement sur demande.
- Noms de fichiers de livraison : Suggérer une convention raisonnable, laisser confirmer.
- Aucune EXPLICATION de code (pourquoi un script fonctionne de telle manière) — cela perd du temps et des tokens. Si un script échoue, lire l'erreur, la communiquer, suggérer une correction technique — pas de leçon.
⚙️ Valeurs de script (ne pas changer !)
Tirées des discussions avec le client et valables pour tous les projets de ce type :
| Paramètre | Valeur | Raison |
|---|---|---|
MIN_SHOT | 6,0 s | Durée minimale d'un plan (moins → trop saccadé) |
CUT_MIN | 6,0 s | Intervalle entre deux coupes (similaire) |
CUT_MAX | 11,0 s | Rythme maximal (intervalles plus longs → ralentissement) |
PARA_GAP | 1,2 s | Intervalle entre un passage parlé et le suivant (trop court → chevauchement) |
MAX_STD | 50 | Écart type max. dans le flux audio (limite de bruit de fond) |
CALM_GAP | 12,0 s | Pause de calme après un cutaway (pas de nouveau cutaway) |
| partition | 55/42/10 % | Caméra A/B/C (ou par défaut : angle principal ≈55 %, deuxième ≈42 %, troisième ≈10 %) |
| fps export | 50 fps | Fréquence d'images de livraison pour tous les projets actuels |
| audio | −14 LUFS | Niveau de livraison pour les interviews/conférences (sans normalisation forte) |
(Remarque : les 50 fps ne changent pas la fréquence de la timeline originale — les rushes peuvent être en 25, 50 ou 60 ; la sortie est toujours calculée en 50 fps. Applicable uniquement si les rushes le supportent raisonnablement.)
✂️ POST-PRODUCTION (Étape 8)
Après étalonnage et vérification, une dernière étape manuelle (ou via computer-use) :
- Début correct : Le plan de coupe place les premiers plans de la caméra A (≈65 s non parlées avant le contenu). Trouver le point où le sujet commence réellement à parler / l'action commence, couper avant — par exemple placer un marqueur blanc. Cette partie ne peut pas être automatisée, car elle nécessite la compréhension du contenu.
- Organisationnel : Enlever les annonces/instructions avant (éventuellement via une timeline de travail).
- Contrôle qualité : Parcourir la timeline → plans flous ou tremblants → échanger contre l'angle approprié. Avec le clip multicam, cela se fait directement dans la timeline (clic droit → changer d'angle). Les angles restent synchronisés car le clip multicam contient toutes les caméras.
- Titres : Insérer le générique de début (p. ex. modèle Overlay de Resolve). Le titre devrait durer environ 5-10 secondes, selon le projet.
À ce stade, le projet devrait être en état cible (comme décrit dans references/vorbild-projekt.md).
🚀 EXÉCUTION
- Activer computer-use →
request_access(["DaVinci Resolve"]). - Créer le dossier de travail local :
mkdir C:\claude\resolve-prep\<nom_court>. - Copier les scripts de
vorlagen/vers le dossier de travail. - Suivre les 9 étapes (voir ci-dessus).
- En cas d'erreur, vérifier
references/fallstricke.mdet les logs Resolve. - Une fois terminé : Nettoyer les nodes partagés (
remove_useless_shared_nodes.py), ranger les timelines (BinAnlegen), faire le point avec l'utilisateur.
📦 Dépendances
- Python 3.10+ avec packages :
whisper(faster-whisper),numpy,json(standard),subprocess(standard),shutil(standard). - DaVinci Resolve Studio 18.6+ (testé avec 21.0.3).
ffprobe(depuis FFmpeg) dans le PATH.- CUDA-compatible GPU pour Whisper (conseillé, mais CPU possible).
- Le dossier
vorlagen/doit être copié dans le dossier de travail du projet.