Que fait FilmForge livraison ?
Un film est terminé quand chaque version est lisible là où elle doit l'être, les mesures sont bonnes, et toute la production tient dans un dossier avec une preuve que rien ne manque. Cette compétence crée les livrables à partir de la matrice des livrables, vérifie chacun d'eux, et finalise la production avec archive.py.
Chemins : scripts/, templates/ et config/ ci-dessous sont des dossiers dans cette compétence (le répertoire de base affiché au chargement), placés par ./install.sh. En travaillant depuis un clone du dépôt, ils sont tools/, templates/ et config/ à sa racine.
Étape 1. La matrice des livrables (templates/delivery-checklist.md)
Copiez-la dans la production et rayez ce que le film n'a pas. Chaque livrable du film provient d'un master, exporté depuis votre éditeur ou compositeur en 3840x2160 depuis la même liste de plans, peintures et mix que l'aperçu, puis encodé avec ffmpeg :
| Livrable | Fabriqué à partir de | Réglages |
|---|---|---|
| Master 4K | L'export 4K de l'éditeur | 3840x2160 au fps de la liste de plans ; HEVC Main via VAAPI (hevc_vaapi) à QP constant 18, balise BT.709, puis remuxé avec -c copy -tag:v hvc1 pour qu'Apple le lise ; sans VAAPI, H.264 (libx264, preset medium, CRF 18, yuv420p) ; AAC 320k ; +faststart |
| 1080p pour publication | Le master | Lanczos vers 1920x1080, libx264 preset slow, CRF 16, High profile, yuv420p ; le mix normalisé à -14 LUFS et -1.5 dBTP par un loudnorm linéaire en deux passes ; AAC 320k ; +faststart |
| Copie pour téléphone | La copie publication | Lanczos vers 1280x720 avec léger débruitage (hqdn3d=1.2:1.2:3:3), libx264 à 900k (maxrate 1400k, buffer 2800k), AAC 128k ; assez petite pour être envoyée dans une conversation |
| Couvertures | Le master | 3 ou 4 des images les plus fortes en 4K, PNG, plus JPG pour publication ; lisibles à la taille d'un téléphone |
Les commandes ffmpeg exactes : references/deliverables.md. Mettez-les dans un seul script, pour que tout changement reconstruise chaque livrable.
Livres et suppléments, quand le film en a : un livre illustré en vidéos 4K et 1080p avec la musique, un PDF imprimé, un livre web interactif qui tourne ses pages avec la musique, des éditions localisées (chaque langue avec ses propres vidéos 4K, 1080p et téléphone, chaque ligne réécrite et vérifiée par un lecteur natif, jamais composée automatiquement sans relecture), et le making-of en PDF plus un PDF pour téléphone. Détails : references/deliverables.md.
Étape 2. Vérifier chaque livrable
Mesurez les fichiers eux-mêmes, jamais la timeline :
- Flux : codec, taille, format de pixel, fréquence d'images, balise de codec (
hvc1pour le master HEVC), débit et canaux audio, durée, taille et débit binaire (ffprobe). - Volume : intégré, plage et pic vrai (EBU R128, filtre
ebur128de ffmpeg). Le master porte le mix tel quel ; les copies publication et téléphone doivent lire environ -14 LUFS. - Synchro aux points d'histoire : pour chaque point, le plus grand changement d'image et le début sonore le plus fort dans un délai d'une demi-seconde, et leur écart en ms. Les changements d'image proviennent du score de scène de ffmpeg, les débuts sonores de
beatmap.pyexécuté sur l'audio du film. Objectif : une image (42 ms à 24 fps) ou moins là où une coupe se situe sur le point. Un point sans coupe signale un écart ; lisez-le par rapport à la liste de plans. - Fins : la première et la dernière image (noir, ou le titre, intentionnellement).
- Planche contact du film fini, une image toutes les 2 secondes, regardée du début à la fin.
- Visionné une fois du début à la fin sur l'écran cible avec le son, avant approbation.
Les commandes pour chaque vérification : references/deliverables.md (Vérifications).
Pour les PDF : ouvrir dans deux lecteurs, vérifier chaque double page, polices intégrées, images à la résolution d'impression.
Étape 3. L'archive et sa preuve
Tout ce qui a fait le film est mis dans un seul dossier de production : production.yaml, les fichiers d'histoire, les invites, chaque peinture et version, les feuilles de calcul, la partition et sa mesure, le code, les mixages, les livrables, les leçons.
python3 scripts/archive.py build <film> --require deliverables.txt \
--require-shotlist <film>/shotlist.yaml --paintings <film>/art/film \
--exclude "code/.venv/=reconstruit à partir de requirements.txt"
python3 scripts/archive.py verify <film>
build hache chaque fichier dans <film>/MANIFEST.sha256 (format sha256sum -c simple, pour que la preuve survive à l'outil) et écrit manifest.json : nombre de fichiers, octets, fichiers par type, ce qui a été exclu intentionnellement et pourquoi (caches, environnements virtuels, éventuel dossier de suréchantillonnage 4k/), les livrables requis et ceux manquants, les plans sans peinture, et le digest du manifeste lui-même. Il signale COMPLET uniquement quand chaque motif requis correspond et que chaque plan peint a sa peinture. verify re-hache tout plus tard et échoue sur tout fichier manquant ou modifié (et sur un manifeste édité).
Le même outil prouve aussi un petit pack. Le archive-required.txt de Lantern Moth liste ce que son pack de pré-production doit contenir avant qu'un crédit ne soit dépensé pour les peintures, et archive.py build sur le dossier d'exemple avec --require archive-required.txt trouve les dix motifs présents et signale COMPLET.
Copies : prouver une sauvegarde ou un déplacement octet par octet : python3 scripts/archive.py compare <film> <copy>. Il fait en une commande ce que des listes SHA-256 de chaque fichier à la source et dans la copie, et un journal de copie, feraient à la main.
Écrivez un court README dans l'archive : ce que contient chaque dossier, ce qui a été exclu intentionnellement, où se trouve le travail terminé.
Étape 4. Clôture
production.py signoff deliver --by <vous> --note "<master visionné sur la TV ; contrôles OK>", puis advance vers la rétrospective (forge-director).
Sortie
film/avec chaque livrable, nommé<Titre>_4K.mp4,<Titre>_1080p.mp4,<Titre>_phone.mp4,covers/- les chiffres des contrôles dans le rapport (tailles, volume, écarts de synchro à chaque point d'histoire)
MANIFEST.sha256,manifest.json, le README de l'archive
Liste de vérification de porte
- Chaque livrable de la matrice existe et a passé ses contrôles
- Synchro à chaque point d'histoire dans une image
- Visionné sur l'écran cible avec le son
-
archive.py build: COMPLET ;archive.py verify: OK - Chaque copie prouvée avec
archive.py compare - Approuvé
Table de réparation
| Symptôme | Correctif |
|---|---|
| Les appareils Apple refusent le master HEVC | Balise hvc1 manquante : remuxer avec ffmpeg -i in.mp4 -c copy -tag:v hvc1 out.mp4 |
| Le master HEVC ne se décode pas | hvc1 a été écrit pendant l'encodage VAAPI : encoder sans la balise, puis remuxer avec -c copy -tag:v hvc1 |
| La télévision saccade via Wi-Fi | Débit trop élevé (ffprobe l'affiche) : encoder le master à nouveau avec un QP plus élevé (fichier plus petit) |
| HEVC souhaité mais pas d'encodeur VAAPI | ffmpeg -h encoder=hevc_vaapi et ls /dev/dri montrent ce que la machine a ; sinon livrer le master H.264 |
| La plateforme de publication le rejette ou l'écrête | Non normalisé : publier la copie en deux passes (-14 LUFS, -1.5 dBTP, linéaire), pas le master |
| Copie pour téléphone trop grosse à envoyer | La ré-encoder depuis la copie publication à un -b:v plus bas (references/deliverables.md), ou raccourcir ; garder 720p |
| verify signale CHANGÉ | Quelqu'un a modifié un fichier livré : le restaurer depuis une copie prouvée, ou reconstruire et ré-approuver |
| build signale INCOMPLET | Un livrable requis ou une peinture manque : le créer, ou le retirer de la liste intentionnellement avec une raison |
Références
references/deliverables.md: les commandes ffmpeg complètes, les contrôles, les livres, éditions et couvertures